embedded-linux

Determine load address and entry point of stripped Linux Kernel image

…衆ロ難τιáo~ 提交于 2019-12-05 06:35:10
问题 I have a crosscompiling toolchain for an embedded system (mipsel) on my x86 Linux. I know how to build a custom kernel (let's call the image "vmlinux") for it and how to strip that image via objcopy -S -O binary vmlinux vmlinux.bin For further processing I also need the load address and entry point of the image. Before stripping it is no problem to determine them via scripts/mksysmap or, more explicitly, via nm -n vmlinux | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > System.map Then I

Why are i2c_smbus function not available? (I2C – Embedded Linux)

折月煮酒 提交于 2019-12-05 03:27:23
There are many references to using i2c_smbus_ functions when developing embedded Linux software to communicate on the I2C bus. When i2c_smbus functions such as i2c_smbus_read_word_data are referenced in software project for ARM8 processor errors such as ‘ i2c_smbus_read_word_data’ was not declared in this scope are generated at compile. Investigation of the following header files indicate the absence of most i2c_smbus function definition. /usr/arm-linux-gnueabi/include/linux/i2c.h /usr/arm-linux-gnueabi/include/linux/i2c-dev.h Also in that following reference i2c.h file has all the i2c_smbus

Dynamic languages for embedded devices? [closed]

ぃ、小莉子 提交于 2019-12-05 01:47:40
问题 Closed . This question is opinion-based. It is not currently accepting answers. Want to improve this question? Update the question so it can be answered with facts and citations by editing this post. Closed 3 years ago . I need to deploy a dynamic language to a small embedded Linux device, and have difficulty finding the right one: I want to build a small web-application with this language (with a small framework like Sinatra or Camping ) and write some scripts for maintenance. I would prefer

Qemu Freescale i.MX6 DualLite SABRE : root filesystem does not mount

喜夏-厌秋 提交于 2019-12-05 00:36:54
问题 Goal: emulate the "sabrelite : Freescale i.MX6 Quad SABRE Lite Board (Cortex A9)" that Qemu specifically supports (doing 'qemu-system-arm -M ?' it shows up). Qemu ver: 2.10.1 (host: fedora-27). I have successfully cross-compiled and built a 4.1.46 Linux kernel (used the imx_v6_v7_defconfig config file) as well as a simple "skeleton" root filesystem (busybox-based). (FYI, I have a similar working setup for the ARM Cortex-A9 Versatile Express platform - I do this using my own home-spun embedded

Modifying framebuffer (/dev/graphics/fb0) parameters using a Loadable Kernel Module

无人久伴 提交于 2019-12-04 22:43:44
Problem: I have to configure various LCD displays to be used by Android Platform. Almost in all cases there are no electrical specifications freely available for LCD displays on interest. But through experience and reverse engineering the parameters can be guessed reasonably well. I am trying to use Loadable Kernel Modules to fine tune the display parameters (any other suggestions are welcome too). Please find the relevant information below. HW: Atmel SAMA5D31-EK (ARM 5 processor) SW: Andriod Linux (Target), Ubuntu (Host System), Sourcery CodeBench (Cross Compiler) Code Snippets from board-dt

Coherently understand the software-hardware interaction with regard to DMA and buses

做~自己de王妃 提交于 2019-12-04 19:54:15
I've gathered some level of knowledge on several components (including software and hardware) which are involved in general DMA transactions in ARM based boards, but I don't understand how is it all perfectly integrated, I didn't find a full coherent description about this. I'll write down the high level of the knowledge I already have and I hope that someone could fix me where I'm wrong and complete the missing parts so the whole picture would be clear. My description starts with the userspace software and drills down to the hardware components. The misunderstood parts are in italic-bold

Intel chipset - GPIO programming

冷暖自知 提交于 2019-12-04 17:52:50
From the spec, I knew the following information: JGPIO1 PIN# :10 SoC GPIO # : 71 USE select: IO 0x532[7] ( 0 = native function, 1 = GPIO ) IO select: IO 0x536[7] (0 = output, 1 = input ) Level: IO 0x540[7] ( 0 = low, 1= high ) In this case, I want to program GPIO pin # 10. Is there any example or sample code I can refer to ? I can do this thorugh RW-everything [1] . However, this is in Windows. I want to do this in C and in linux environment. Please advise. =============================================================== For example, If I want to set The 7th bit to 1 at 0x532 The 7th bit to 0

Chipsee 7 inch LCD support in Linux kernel 3.14

喜你入骨 提交于 2019-12-04 15:58:42
Has anybody ported Chipsee 7 inch LCD on Linux kernel 3.14 or later ? Is there any patch available for the same ? If no patches any suggestion porting Chipsee LCD support from Linux kernel 3.8 to Linux kernel 3.14 ? Update: `/* * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ /dts-v1/; #include "am33xx.dtsi" #include "am335x-bone-common.dtsi" &ldo3_reg { regulator-min-microvolt =

Reading from a block device in kernel space

三世轮回 提交于 2019-12-04 15:36:22
I am writing a kernel module and need to perform reads from an existing block device. (/dev/something). Does anyone know of any other modules that do these that I can use as reference ? Any pointers would be welcome (Linux.2.6.30) If you really absolutely must then use the filp_open , filp_close , vfs_read and vfs_write functions. The description for for filp_open states "This is the helper to open a file from kernelspace if you really have to. But in generally you should not do this, so please move along, nothing to see here.." There is an excellent article "Driving Me Nuts - Things You Never

Linux transfer parameter for function in DECLARE_WORK

房东的猫 提交于 2019-12-04 14:05:47
问题 I try to programm a Event-Workqueue, but I meet some problems. I use a Linux 2.6.36 Kernel. And the DECLARE_WORK function changed from 3 parameters to 2. The question is, the old declaration was DECLARE_WORK (struct work_struct name, void (*func)(void *), void *data); And the new one is DECLARE_WORK (struct work_struct name, void (*func)(void *)); I think the void *data pointer was to give the func parameters. Is that right? And how can I do that with the new version of DECLARE_WORK? Thanks