kyLinMini学习笔记:2. uCOS-III移植和调试
物联网
4021 人阅读
|
0 人回复
|
2017-08-25
TA的每日心情 | 开心 2018-6-21 08:39 |
|---|
签到天数: 8 天 连续签到: 2 天 [LV.3]偶尔看看II
秀才
- 积分
- 335
|
这周准备在麒麟座mini开发板上把uC/OS-III跑起来,同时熟悉一下硬件平台和文档。Micrium的官网已经一个多月都不能下载东西了,不知道是服务器有问题还是要放弃中国市场。所以也没办法找最新的BSP开发包做参考,只好基于以前下过的一个F107的BSP包做修改了。
还好F107和F103都是CortexM3的core,又都是F1xx系列的,这样uC/OS中和cpu arch相关的代码就不用动了,STM32的firmware库也不用动了。由于跑基础BSP只需要中断、时钟和串口,再加个点灯;而中断NVIC和时钟SysTick都是标准的,所以移植也就做了以下的改动:
1. 更新STM32的firmware库
我看官方BSP包里firmware库还是V2.1.0RC2的版本,于是就更新了为V3.5.0版本;但不是cube的,也不确定是不是最新的,好像是今年年初的时候下的
2. 对照着Reference Manual改中断向量相关的文件
主要是cstartup.s,bsp_int.c和bsp_int.h
3. 对照着Reference Manual改IO连接相关的代码
主要是LED的IO管脚配置、USART1的IO管脚配置
移植完编过之后,本以为能顺利地跑起来了,没想到还是遇到问题了——串口打印乱码,额。。。
怎么改波特率都不对,难道是分频出现了问题?正好别的同事那里有块F103C8T6的最小系统板,和mini的CBT6应该差别很小,我又重新创建了一个基于C8T6的工程,除了LED的IO口配置外,代码几乎没有改动,结果放到他那块板子上就一切正常了,奇了个怪了!
拿过来仔细对了一下,发现他的晶振是8M的,mini板的晶振是12M的,难不成是这儿的问题,不应该啊。。。用调试器跟两块板子的主频都是72M,串口的BRR寄存器也都配的是0x271,不应该啊。。。
无奈之下只好上网搜“麒麟座mini 串口乱码”,竟然真有人遇到了同样的问题,而且还有解决办法,网上好多高手啊
https://open.iot.10086.cn/bbs/thread-1358-1-1.html
对比了一下网盘上的代码,发现确实不一样,还真是晶振的问题,需要把这两个文件里的配置也都做相应的适配,板子才能正常工作
stm32f10x.h
system_stm32f10x.c
改完之后烧进去,板子终于能正常打印了,LED灯的状态也表明uC/OS-III已经能正常运转了
接下来就是调试I2C的驱动,以及AT24C02和SHT20的驱动,两个驱动都不是很难,就是不知道是SHT20有bug,还是我的时序配置的不对,我读取完温度后只有对它进行soft reset操作之后,才能正常访问同一条总线上的AT24C02,否则I2C操作就会报错,身边没有示波器,再加上又不是太懂硬件,而且看网盘的代码里操作SHT20之后也有soft reset的操作,所以也就没有继续深究
这些基础外设都调通了,由于对网络不是特别熟悉,要一下子做应用可能只能是照猫画虎;所以下面的任务就是把esp8266和net的代码学习一下,看懂了再进行下一步
|
|
|
|
|
|
|
|
|