上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 36 下一页
摘要: 1.上章的oops栈信息如下图所示: 9fe0: 代表最初的栈顶SP寄存器位置 9e80:代表函数出错的SP寄存器位置 2.我们先来分析上图的栈信息,又是怎样的过程呢? 2.1内核主要是通过STMDB和LDMIA汇编命令来入栈和出栈 (STMDB和LDMIA汇编命令参考: http://www.cn 阅读全文
posted @ 2019-11-03 19:04 一个不知道干嘛的小萌新 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 1.当驱动有误时,比如,访问的内存地址是非法的,便会打印一大串的oops出来 1.1以LED驱动为例 将open()函数里的ioremap()屏蔽掉,直接使用物理地址的GPIOF,如下图所示: 1.2然后编译装载26th_segmentfault并执行测试程序后,内核便打印了oops出来,如下图所示 阅读全文
posted @ 2019-11-03 18:56 一个不知道干嘛的小萌新 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 1.Makefile解析 1.1Makefile规则: 目标(target)…: 依赖(prerequiries)… <tab>命令(command) 如果“依赖文件”比“目标文件”更加新,那么执行“命令”来重新生成“目标文件”。 命令被执行的2个条件:依赖文件比目标文件新,或是 目标文件还没生成。 阅读全文
posted @ 2019-11-01 11:47 一个不知道干嘛的小萌新 阅读(603) 评论(0) 推荐(0) 编辑
摘要: 1.用Makefile编译一个程序 1 hello: hello.c 2 gcc -o hello hello.c 3 clean: 4 rm -f hello 将上述4行存为Makefile文件(注意必须以Tab键缩进第2、4行,不能以空格键缩进) make命令根据文件更新的时间戳来决定哪些文件需 阅读全文
posted @ 2019-11-01 09:35 一个不知道干嘛的小萌新 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 1. 隐式函数声明概念 在C语言中,函数在调用前不一定非要声明。如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码。下面是一个例子: 单纯的编译上述源代码,并没有任何报错,只是在链接阶段因为找不到名为any_name_function的函数体而报错。 之所以编译不会 阅读全文
posted @ 2019-10-29 11:46 一个不知道干嘛的小萌新 阅读(5027) 评论(0) 推荐(1) 编辑
摘要: 1.源码 main.c #include <stdio.h> #include "sub.h" int main(int argc, char *argv[]) { int i; printf("Main fun!\n"); sub_fun(); return 0; } sub.c void sub 阅读全文
posted @ 2019-10-29 11:14 一个不知道干嘛的小萌新 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 问题: 在加载nvp6158的模块时,提示“ nvp6158_ex: Unknown symbol HI_I2C_Read (err 0) nvp6158_ex: Unknown symbol HI_I2C_Write (err 0) insmod: can't insert 'nvp6158_ex 阅读全文
posted @ 2019-10-27 11:41 一个不知道干嘛的小萌新 阅读(2256) 评论(0) 推荐(0) 编辑
摘要: 1.问题出现 根据海思SDK里面手册编译后,制作成的glibc文件系统下载进去就出现这个问题。 2.问题解决 mw.b 0x82000000 0xff 0xb00000;tftp 0x82000000 rootfs_hi3521d_64k.jffs2;sf probe 0; sf erase 0x5 阅读全文
posted @ 2019-10-23 14:30 一个不知道干嘛的小萌新 阅读(673) 评论(0) 推荐(0) 编辑
摘要: printk()会将打印信息存在内核的环形缓冲区log_buf[]里, 可以通过dmesg命令来查看log_buf[] 1.环形缓冲区log_buf[]又是存在内核的哪个文件呢? 位于/proc/kmsg里,所以除了dmesg命令查看,也可以使用cat /proc/kmsg来查看。 2.但是,dme 阅读全文
posted @ 2019-10-21 16:10 一个不知道干嘛的小萌新 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 1.在驱动调试中,使用printk(),是最简单,最方便的办法 当uboot的命令行里的“console=tty1”时,表示printk()输出在开发板的LCD屏上 当uboot的命令行里的“console=ttySAC0,115200”时,表示printk()输出在串口UART0上,波特率=115 阅读全文
posted @ 2019-10-21 15:19 一个不知道干嘛的小萌新 阅读(1087) 评论(0) 推荐(0) 编辑
上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 36 下一页