会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
悄然拔尖
嗨,你为什么那么努力?因为我想去的地方很远,想买的东西很贵,喜欢的人很优秀!
博客园
首页
新随笔
联系
管理
订阅
上一页
1
2
3
4
5
6
7
8
9
10
···
24
下一页
2018年1月13日
s3c2440——实现裸机的简易printf函数
摘要: 在单片机开发中,我们借助于vsprintf函数,可以自己实现一个printf函数,但是,那是IDE帮我们做了一些事情。 刚开始在ARM9裸机上自己写printf的实现的时候,包含对应头文件也会提示vsprintf函数找不到,查询很多资料之后,发现使用arm-linux-ld就是找不到对应的库函数,换
阅读全文
posted @ 2018-01-13 15:33 Crystal_Guang
阅读(1235)
评论(0)
推荐(0)
2018年1月2日
s3c2440——按键中断
摘要: s3c2440的异常向量表: IRQ中断地址是0x18.所以,根据之前的异常处理方式,我们编写启动文件: 为什么需要lr减4,可以参考这篇文章:http://blog.csdn.net/zzsfqiuyigui/article/details/23334177 这是为了保证,当cpu正在执行某条指令
阅读全文
posted @ 2018-01-02 21:17 Crystal_Guang
阅读(372)
评论(0)
推荐(0)
2017年12月25日
s3c2440——swi异常
摘要: 系统复位的时候,从0地址开始执行,这个时候系统处于svc管理模式。 一般而言,我们的app应用程序是处于用户模式的,但是用户模式不能访问硬件,必须处于特权模式才可以。所以这里我们用swi软中断方式来实验。swi异常会让cpu进入svc模式。 首先,系统复位,执行代码,此刻处于svc模式,然后我们切换
阅读全文
posted @ 2017-12-25 23:18 Crystal_Guang
阅读(745)
评论(0)
推荐(1)
2017年12月24日
S3C2440的七种模式之——未定义模式(去掉bl print1 bug解决)
摘要: 现在做第一个实验,模拟未定义模式。 未定义模式,是cpu遇到自己不能识别的指令时候做出的异常处理。 arm指令的机器码一定是按照某种规范要求的,不然你随意写一条指令,cpu不是都可以执行吗?在cpu没有定义该条指令含义的情况下,我们执行了这样未定义的指令,就会进入未定义异常。 现在我们要模拟一个未定
阅读全文
posted @ 2017-12-24 13:10 Crystal_Guang
阅读(718)
评论(1)
推荐(0)
2017年12月19日
C语言引用连接脚本lds中的符号——清除bss段,c实现方式
摘要: 之前我们的启动文件清除bss和拷贝都是通过汇编的方式的实现,但是,我们能够使用C语言,就不使用汇编: 先看连接脚本: 现在我们编写C语言的copy和clean函数,但是在我们的c程序中,需要访问连接脚本中的符号。 先看代码,稍后解释: start.S部分展示: 先不管连接脚本的引用,我们现在讨论一个
阅读全文
posted @ 2017-12-19 22:34 Crystal_Guang
阅读(1239)
评论(0)
推荐(0)
ctrl+z的ascii码是多少?
摘要: 今天在使用中移动的模组的时候,发现: 突然把我难住了,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
阅读(1559)
评论(0)
推荐(0)
2017年12月17日
代码重定位和位置无关码——运行于nor flash
摘要: 通过前面的学习,我们知道,把可执行程序从一个位置复制到另一个位置的过程叫做重定位。 现在有两种方式,第一种是只重定位data段到内存(sdram),为什么需要重定位?因为有些flash的写操作,不是简单地内存访问,通常我们使用sdram这个介质作为程序运行的载体。但是只重定位data段这种方式存在弊
阅读全文
posted @ 2017-12-17 20:22 Crystal_Guang
阅读(2286)
评论(0)
推荐(0)
2017年11月30日
FreeRTOS 事件标志组 ——提高篇
摘要: 假设你已经看过FreeRTOS 事件标志组这篇随笔了。 之前的基础篇,真的就只是简单了解一下,相当于大学实验室的实验,但是,我们实际公司项目中,需要更多地思考,就算我们之前只是学习了基础概念以及基础语法,只要我们勤加思考,就能灵活的运用基础知识了,基础是内功,基础打好了,功力自然上升。 事件标志组的
阅读全文
posted @ 2017-11-30 23:27 Crystal_Guang
阅读(7178)
评论(1)
推荐(1)
2017年11月29日
STM32串口FIFO实现,项目中的必须
该文被密码保护。
阅读全文
posted @ 2017-11-29 11:41 Crystal_Guang
阅读(3)
评论(0)
推荐(0)
2017年11月28日
拷贝代码和连接脚本的改进
摘要: 上一篇随笔说了,需要清除bss段,我们现在定义main函数如下: 注意这个全局变量是没有初始值的,即存放在bss段中,如果我们的启动文件没有清除bss段,串口的输出将是你想不到情况。比如,现在程序运行执行了++操作20次,你下次快速断电再上电的时候,g_Char2的值是接着之前的值增加的,而增加了清
阅读全文
posted @ 2017-11-28 22:42 Crystal_Guang
阅读(525)
评论(0)
推荐(0)
2017年11月27日
连接脚本的解析
摘要: 上篇随笔写了一个连接脚本,如果你不想看那个复杂的ld连接脚本文章,看我上一篇和这篇随笔就可以做到编写目前我们够用的连接脚本了,本章的知识点全部来自那篇文章。 先看连接脚本的格式: 其中有一些东西我们是不会用到的: 第一个,段名,这个我们可以随便取,但是一般按照.data .text等这样的名字,也可
阅读全文
posted @ 2017-11-27 22:28 Crystal_Guang
阅读(1431)
评论(1)
推荐(0)
2017年11月26日
段概念的引入
摘要: 关于段的脚本语法编写可以参考: 参考资料:Using LD, the GNU linker 关于重定位可以参考我之前的一篇随笔: ld,连接器 简单通俗一点来说,就是把可执行代码放在内存的另一个地方去。 比如,我的bin文件烧写在nor flash上,在前2k存放代码段,紧接着存放.data段,此时
阅读全文
posted @ 2017-11-26 12:25 Crystal_Guang
阅读(426)
评论(0)
推荐(0)
2017年11月24日
s3c2440代码重定位和段的引入——学以致用,综合Makefile的锻炼
摘要: 对于2440而言,nand启动,nand的前4k内容由硬件复制到sram。 nor flash,可以像内存一样读,但是不能像内存一样写,执行写操作需要特殊的操作。 程序中包含有需要写的全局或者静态变量,它们在bin文件中,写在nor flash上,直接修改这样的变量是无效的。 到底什么意思呢?还是看
阅读全文
posted @ 2017-11-24 23:22 Crystal_Guang
阅读(1014)
评论(2)
推荐(0)
2017年11月18日
s3c2440内存控制器与SDRAM基本测试
摘要: 前面我们实验的LED和串口程序,是cpu发送地址给特定的寄存器,在寄存器中写相应的位,达到控制要求。 第一类是GPIO门电路如LED,第二类是协议类如串口,这些都不是cpu直接给地址信息,而是通过寄存器来控制的。 第三类是内存接口,cpu发出的地址可以直接传递给这种设备如nor flash,sdra
阅读全文
posted @ 2017-11-18 22:08 Crystal_Guang
阅读(840)
评论(0)
推荐(0)
2017年11月5日
S3C2440串口的基本使用
摘要: 2440A有三个串口,我们使用串口0对它进行了解熟悉。 首先肯定是应该找到手册上串口0所对应的引脚,然后配置相应寄存器。 串口0对应GPIO H的 2,3 串口在单片机中我们已经有很多使用经验了,对于协议采用 8-N-1,8bit数据位,无校验,1停止位。 说明波特率的计算方式: 把串口对应IO配置
阅读全文
posted @ 2017-11-05 13:13 Crystal_Guang
阅读(1682)
评论(0)
推荐(1)
上一页
1
2
3
4
5
6
7
8
9
10
···
24
下一页
公告