为树莓派2添加系统调用
Veröffentlicht am
主要参考了Stack Overflow上的这个问题和这篇博文。后者只是在arch/arm/kernel/calls.S中添加了一行CALL(),个人感觉这样就够了,而前者为了整个系统完整性还在一些头文件中添加了一些声明。
需要注意的一点是,最后用syscall()调用时,系统调用号为arch/arm/kernel/calls.S中新添加的CALL()的序号,如果有在arch/arm/include/uapi/asm/unistd.h中添加#define的话,也是相对于__NR_SYSCALL_BASE的偏移量,而不是include/uapi/asm-generic/unistd.h中用#define定义的序号(我很怀疑修改该文件的必要性)。
还有一点,添加的系统调用的实现不要写在已有的.c文件中,而要新建一个文件,然后在Makefile的obj-y中添加一个对应.o文件,这样可大大减少重编译的时间,因为没有文件依赖新的.o文件,之后修改也方便。
更新树莓派2的内核
Veröffentlicht am
我用的是树莓派2,不过对树莓派3应该也适用。
主要参考了树莓派官网上的这篇文档和这篇博文,前者没有提及更新firmware,后者没有提及用scripts/mkknlimg生成img文件,两者结合一下即可。
我是在PC上交叉编译的,速度会快一些。
步骤略,详见上文两个链接。
main()之前做点什么
Veröffentlicht am
1 | #include <iostream> |
Module windrvr6 is not loaded. Please reinstall the cable drivers. See Answer Record 22648.
Veröffentlicht am
之前写在别的地方,现在原文搬过来。