我已经成功地在我的平板电脑上闪现了一个错误的boot.img,现在我不能打开它。(是的,我有一个引导循环)我已经下载了SP闪存工具和原始源代码,但不知怎么我无法从它编译内核……我想,有些东西是缺少的。以下是我迄今所做的工作:
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9
cd android
tar xvf lenovo_tab_2_a8-50_osc_201505.tar.gz
export ARCH=arm64
ex
我的rootfs.cpio只有以下文件:
[root@localhost extract]# ls
dev init tmp
dev只有控制台。
init是根据最后给出的程序交叉编译的:
然后我创建一个映像并运行linux。它运行得很好,但是当它出现时,它会显示类似于以下内容的错误:
Failed to open /sys/class/gpio/gpio251/direction
Failed to open /sys/class/gpio/gpio251/value
所以,我手动创建了这些文件夹和文件,现在看起来如下:
[root@localhost extract]# ls
我只想知道Linux3.8中是否有一个头文件来描述硬件板(特别是Beaglebone黑板)的GPIO端口。Beaglebone黑板中有四组GPIO,每组中有32组GPIOs。因此,我猜GPIO在GROUP X(0 <= X <= 3) PORT Y (0 <= Y <= 31)中,将映射到GPIO端口(32 * X + Y)。例如,GPIO12 in GROUP1是GPIO44,当我使用Linux时,我们可以使用44个。因此,当我使用一些API(如"gpio_is_valid“)时,我可以将参数设置为44。因为我想为某些设备编写Linux驱动程序,所以我真的需要
我在和pi3B玩的时候发现了一件奇怪的事情。我想在/sys/class/gpio中创建一个文件(只是随便找找,没有具体的原因),但是我的Permission被拒绝了。下面是一些信息。
pi@raspberrypi:/sys/class/gpio $ groups
pi adm dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi
pi@raspberrypi:/sys/class/gpio $ ls -ld .
drwxrwx--- 2 root gpio 0 May 6 00:28 .
pi
我正在尝试一些抖动计时测试,方法是切换GPIO线并在示波器上观察波形。我的内核是用PREEMPT_RT编译的。我希望将进程的调度程序更改为SCHED_FIFO可以减少抖动,但这似乎没有太大的不同。代码如下。在试图从这段代码中获得实时性能时,我是否做错了什么?
// Program to test Linux timing jitter by driving GPIO output via sysfs interface.
// In this variant, the scheduler is changed to SCHED_FIFO.
#include <sys/stat.h>
我正在尝试编译一个内核模块,它使用来自linux/gpio/consumer.h的新的GPIO。但“error: ‘gpio_handle’ has an incomplete type ‘struct gpio_desc’'”的制作失败了。我读到,我还需要在Kconfig中添加GPIOLIB依赖项,但是简单地添加“依赖于”并不有效。包含这种依赖的正确方法是什么?
如何选择在Linux下与gpio一起工作?
是否可以使用select来创建一种中断驱动程序,也许可以通过一些线程的帮助?
当我使用select调用时,我应该考虑什么?
谢谢
注意:我已经阅读了select上的手册页,但我认为我需要更多关于这个主题的帮助。
man 3位置选择
man 2选择
man 2 select_tut
更新:gpio公开在sysfs gpio块中。但我不知道我能不能用这个和select。
目前,我正在为friendlyarm Linux2.6.32.2 (mini2440)开发GPIO内核模块。我来自电子学背景,是Linux的新手。
在启动时加载的内核模块和相关的设备文件位于/dev中,名称为gpiofreq。
第一次写入设备文件时,GPIO引脚以50 pin的频率连续切换。在第二次写入时,停止切换。第三次,它再次启动,依此类推。
我已经编写了单独的内核模块来生成freq。但是CPU在第一次写入设备文件后就冻结了。显示了终端提示符,但之后无法运行任何命令。
下面是代码片段:
//calling function which generates continuous freq a