12 2017 档案

摘要:系统复位的时候,从0地址开始执行,这个时候系统处于svc管理模式。 一般而言,我们的app应用程序是处于用户模式的,但是用户模式不能访问硬件,必须处于特权模式才可以。所以这里我们用swi软中断方式来实验。swi异常会让cpu进入svc模式。 首先,系统复位,执行代码,此刻处于svc模式,然后我们切换 阅读全文
posted @ 2017-12-25 23:18 Crystal_Guang 阅读(733) 评论(0) 推荐(1) 编辑
摘要:现在做第一个实验,模拟未定义模式。 未定义模式,是cpu遇到自己不能识别的指令时候做出的异常处理。 arm指令的机器码一定是按照某种规范要求的,不然你随意写一条指令,cpu不是都可以执行吗?在cpu没有定义该条指令含义的情况下,我们执行了这样未定义的指令,就会进入未定义异常。 现在我们要模拟一个未定 阅读全文
posted @ 2017-12-24 13:10 Crystal_Guang 阅读(701) 评论(1) 推荐(0) 编辑
摘要:之前我们的启动文件清除bss和拷贝都是通过汇编的方式的实现,但是,我们能够使用C语言,就不使用汇编: 先看连接脚本: 现在我们编写C语言的copy和clean函数,但是在我们的c程序中,需要访问连接脚本中的符号。 先看代码,稍后解释: start.S部分展示: 先不管连接脚本的引用,我们现在讨论一个 阅读全文
posted @ 2017-12-19 22:34 Crystal_Guang 阅读(1207) 评论(0) 推荐(0) 编辑
摘要:今天在使用中移动的模组的时候,发现: 突然把我难住了,ctrl+z要在我的数据包中通过TCP/IP发送,而结束字符肯定是需要我自己加在数据包的末尾的。 故,做如下测试: 我的输入是ctrl+z(小z),ctrl+Z(大写z),ctrl+A,+B,+C,+D,+E,+F. 得出结论是,ctrl+字母a 阅读全文
posted @ 2017-12-19 21:23 Crystal_Guang 阅读(1504) 评论(0) 推荐(0) 编辑
摘要:通过前面的学习,我们知道,把可执行程序从一个位置复制到另一个位置的过程叫做重定位。 现在有两种方式,第一种是只重定位data段到内存(sdram),为什么需要重定位?因为有些flash的写操作,不是简单地内存访问,通常我们使用sdram这个介质作为程序运行的载体。但是只重定位data段这种方式存在弊 阅读全文
posted @ 2017-12-17 20:22 Crystal_Guang 阅读(2246) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示