摘要: 网上有个英文的官方文档: ftp://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html#SEC21 1、主要的格式 (1)secname:段名 (2)start:起始地址;运行时地址;重定位地址 (3)AT(ldadr) :load add 阅读全文
posted @ 2018-04-11 23:42 伊斯科明 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 1、简单的汇编知识 (1)LDR : 读内存 LDR R0, [R1] : 假设R1的值为x,读取地址x上的数据(4字节),保存到R0中。所以[ ]是去读取R1保存地址所指向的内存 (2)STR : 写内存命令 STR R0, [R1] : 假设R1的值为x,把R0的值写到地址x (4字节) (3) 阅读全文
posted @ 2018-03-21 23:42 伊斯科明 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 这题我用了比较暴力的方法,直接遍历 但是一开始遇到一点小问题,下面是错误的做法。我直接定义一个数组,然后返回,这是一个基本的错误,因为这个函数里面的数组的空间是分配在栈上,在函数结束后就释放了。 如果是定义一个指针,然后用malloc分配的空间是建立在堆上,函数结束后并没有消失,所以是正常运行的。另 阅读全文
posted @ 2018-03-04 13:55 伊斯科明 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 1、当程序执行出错后,会生成一个core文件 2、调试命令:gdb 可执行文件 core文件,比如我的hello文件生成的core dump文件core,就是执行 可以看到显示了哪里出错 3、 也可以执行where命令显示哪里出错了,list命令是列出出错地方的上下文。list m,n,m,n显示m 阅读全文
posted @ 2018-01-01 11:34 伊斯科明 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 我是在vmware中的Ubuntu系统中操作 1、切换root用户:sudo su 2、echo core > /proc/sys/kernel/core_pattern,这是为了让core dump文件生成在执行目录 3、修改宿主用户的.bashrc文件,在文件最后面添加:ulimit -c un 阅读全文
posted @ 2017-12-31 20:26 伊斯科明 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 1、 uImage一般是vmlinux和一些头部信息组成,其中vmlinux就是编译出来的文件 2、 分析内核的启动流程一般就是看Makefile文件,我们首先来分析内核目录的顶层Makefile文件: 3、 编译的时候我们其实可以看到打印很多编译需要用到的文件,如链接脚本,输出的.o文件以及用到的 阅读全文
posted @ 2017-11-12 17:31 伊斯科明 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 例子1: config文本的内容: 123 abc aedfdf 解释:通过例子2和3可知,加上-n和p后,能只输出匹配了的字串;通过例子2和4可知,-n和!p参数可以得到不匹配的字串 阅读全文
posted @ 2017-10-09 23:08 伊斯科明 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 最近看到了关于硬连接和软连接的知识,觉得很好,保存以后能方便查看,就直接贴链接了: http://www.mamicode.com/info-detail-1914045.html 阅读全文
posted @ 2017-10-07 17:26 伊斯科明 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 函数指针的定义一般类似为:int (* func)();而指针函数定义一般为:int *func(); //代表返回值是一个整型指针 还有一种类似于函数指针的定义法为:typedef int (* func)(void);这个和函数指针的区别在于,这个是定于一种类型,而函数指针是定义一个变量。这种类 阅读全文
posted @ 2017-09-20 19:58 伊斯科明 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 对于嵌入式系统的启动流程大概如下: 上电 --》 bootloader 启动 --》 Linux内核 --》 挂载根文件系统 --》 启动应用程序 一般来说,kernel是uboot从flash读到SDRAM中,然后再启动的。有时候uboot会通过cmdline传递一些参数给内核,比如我们工作中,u 阅读全文
posted @ 2017-09-16 23:30 伊斯科明 阅读(168) 评论(0) 推荐(0) 编辑