2010年2月17日
摘要: LCD驱动其实对TinyCLR并无必要,特别是在EM-STM3210E开发板上,因为该开发板上的内存太小了,片内64K,片外扩展了128K,加起来也不过172K,而我们知道针对320*240的显示大小,16bit的位图所占的大小就是150K,很显然.Net Micro Framework所提供的图形库如不加修改是很难正常运行的,不过对我们来说在LCD屏幕上显示文字信息也是值得期待的,如果修改一下图形库,在LCD上画个线、画个圆和显示个位图也绝不成问题。 和我们以前开发的驱动相比,LCD的驱动开发还是比较繁琐一些的,因为LCD的驱动代码分散在三个目录中(题外话,我觉得针对.Net Micro Framework来说,最难的驱动是网卡驱动(特别是wifi驱动)、其次是USB驱动,和它们相比,LCD驱动就是小菜了)。 阅读全文
posted @ 2010-02-17 19:51 刘洪峰IoT 阅读(1551) 评论(1) 推荐(2) 编辑
摘要: SysTick驱动对TinyCLR来说非常重要,.Net Micro Framework系统的多线程和多任务(对托管代码来说是单任务多线程,但是还存在和托管代码同时运行的任务,如我们用MFDeploy程序Ping TinyCLR或擦写Flash 的时候,就是另外的任务在执行)就是靠它来实现的。 阅读全文
posted @ 2010-02-17 00:37 刘洪峰IoT 阅读(1360) 评论(1) 推荐(1) 编辑
  2010年2月15日
摘要: 对.Net Micro Framework系统来说,正常情况下Flash(包括NandFlash和NORFlash)分为六个区,分别为: 1、 BLOCKTYPE_BOOTSTRAP(存放启动代码,一般为TinyBooter) 2、 BLOCKTYPE_CONFIG(配置区,存放配置信息) 3、 BLOCKTYPE_CODE(本地代码区,指TinyCLR代码) 4、 BLOCKTYPE_DEPLOYMENT(托管代码区,存放用户的C#程序) 5、 BLOCKTYPE_STORAGE_A(用户数据存储区) 6、 BLOCKTYPE_FILESYSTEM(文件系统)其中2、3、4项为.Net Micro Framework系统所必须。 阅读全文
posted @ 2010-02-15 20:22 刘洪峰IoT 阅读(1629) 评论(7) 推荐(0) 编辑
  2010年2月13日
摘要: 目前在Cortex-M3平台上最常见的嵌入式操作系统就是UCOSII了,除此之外可支持的主流嵌入式操作系统就难以见到了,这是因为Cortex-M3主频较低(常见72M),不支持MMU,片内Flash和片内RAM都比较小等等,这几点限制,就使诸如WINCE系统、嵌入式Linux等需要MMU支持的系统无法进行移植,而不需要MMU支持的ucLinux目前也难以见到。不过现在好了,.Net Micro Framework V4从今天起,已正式步入Cortex-M3平台可支持的嵌入式系统行列了。 阅读全文
posted @ 2010-02-13 19:37 刘洪峰IoT 阅读(1654) 评论(5) 推荐(0) 编辑
  2010年1月24日
摘要: 虽然在PC机中,串口渐行渐远,但是在嵌入式领域,串口仍可以说是如日中天,因为它造价低廉、并且编程也比较方便,在没有显示屏或输入设备的系统上,串口更是不可或缺,和超级终端一道,共同解决了信息显示和输入问题。 阅读全文
posted @ 2010-01-24 23:31 刘洪峰IoT 阅读(1429) 评论(4) 推荐(0) 编辑
  2010年1月20日
摘要: 要点亮LED灯或获得输入IO的状态应该是比较容易的,打开端口时钟,然后读写相关的GPIO寄存器就可以了,但是要实现一个输入中断,就要费些周折了。对STM32(Cortex-M3)的芯片来说,要实现一个GPIO中断功能至少需要六个步骤。 阅读全文
posted @ 2010-01-20 23:39 刘洪峰IoT 阅读(1623) 评论(3) 推荐(1) 编辑
  2010年1月18日
摘要: Cortex-M3的中断架构和以往的ARM7、ARM9、ARM11有了很大的区别,IRQ、FIQ的概念的已经消失,随之而来的是NVIC中断管理(支持最多256个中断优先级,128级抢断)及中断向量表。这个中断向量表似有相识之感,在当时大学时期学习DOS平台下的C语言开发的时候,在设置BIOS时钟中断的时候,就曾把中断函数的指针地址设置到时钟中断的入口地址区,以期中断发生的时候,执行指定的函数。当然不仅是时钟中断,其它的中断的处理方式也类似。在DOS那个时代,估计最高深一点的编程就是程序驻留和钩子函数(姑且把修改中断地址以截获信息的这一类函数为钩子函数吧),以此看来,Cortex-M3的中断架构倒是借鉴了BIOS的中断处理机制。 阅读全文
posted @ 2010-01-18 23:14 刘洪峰IoT 阅读(1616) 评论(2) 推荐(0) 编辑
  2010年1月7日
摘要: 最早使用的ARM开发工具是MDK 3.1,当时是为TI在DM335开发板上移植.Net Micro Framework,由于该开发板没有ISP工具,所以要调试内存版本的TinyCLR程序,必须要预先初始化SDRAM,否则无法把程序Download到内存中去。幸好MDK开发工具提供了一些脚本示例,所以相对比较容易的编写了一个初始化DM335 SDRAM的脚本,但是使用RVDS却没有这么幸运。 阅读全文
posted @ 2010-01-07 16:25 刘洪峰IoT 阅读(2073) 评论(4) 推荐(0) 编辑
  2010年1月3日
摘要: 上两篇《修改启动代码&重写向量表》《SRAM初始化&设置NVIC中断表偏移》文章中,我们设置了中断向量表,初始化了RAM,并重设了向量表的地址,本篇文章是相对重要的一篇,我们将设置芯片时钟。 阅读全文
posted @ 2010-01-03 23:48 刘洪峰IoT 阅读(1468) 评论(5) 推荐(1) 编辑
摘要: 上篇《修改启动代码&重写向量表》文章中我们介绍了中断向量表的编写,这次我们编写SRAM初始化代码,在《调试初步:点亮LED灯》文章中,我们提到了MDK脚本代码,其实这部分代码和MDK脚本代码实现类似的功能。 阅读全文
posted @ 2010-01-03 22:40 刘洪峰IoT 阅读(1468) 评论(0) 推荐(0) 编辑