爱板网论坛

查看: 149|回复: 0

[中移One NET] kyLinMini学习笔记:2. uCOS-III移植和调试

[复制链接]

5

主题

1

好友

176

积分

童生

Rank: 2

  • TA的每日心情
    开心
    2017-8-23 08:39
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2017-8-25 16:09:42 |显示全部楼层
    这周准备在麒麟座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管脚配置
    移植完编过之后,本以为能顺利地跑起来了,没想到还是遇到问题了——串口打印乱码,额。。。
    1.usart-error.jpg

    怎么改波特率都不对,难道是分频出现了问题?正好别的同事那里有块F103C8T6的最小系统板,和mini的CBT6应该差别很小,我又重新创建了一个基于C8T6的工程,除了LED的IO口配置外,代码几乎没有改动,结果放到他那块板子上就一切正常了,奇了个怪了!
    拿过来仔细对了一下,发现他的晶振是8M的,mini板的晶振是12M的,难不成是这儿的问题,不应该啊。。。用调试器跟两块板子的主频都是72M,串口的BRR寄存器也都配的是0x271,不应该啊。。。
    4.12M-8M.jpg

    无奈之下只好上网搜“麒麟座mini 串口乱码”,竟然真有人遇到了同样的问题,而且还有解决办法,网上好多高手啊
    https://open.iot.10086.cn/bbs/thread-1358-1-1.html
    对比了一下网盘上的代码,发现确实不一样,还真是晶振的问题,需要把这两个文件里的配置也都做相应的适配,板子才能正常工作
    stm32f10x.h
    2.stm32f10x.jpg

    system_stm32f10x.c
    3.system-f10x.jpg

    改完之后烧进去,板子终于能正常打印了,LED灯的状态也表明uC/OS-III已经能正常运转了
    5.usart-ok.jpg

    6.led-ok.jpg


    接下来就是调试I2C的驱动,以及AT24C02和SHT20的驱动,两个驱动都不是很难,就是不知道是SHT20有bug,还是我的时序配置的不对,我读取完温度后只有对它进行soft reset操作之后,才能正常访问同一条总线上的AT24C02,否则I2C操作就会报错,身边没有示波器,再加上又不是太懂硬件,而且看网盘的代码里操作SHT20之后也有soft reset的操作,所以也就没有继续深究
    7.soft-reset.jpg

    这些基础外设都调通了,由于对网络不是特别熟悉,要一下子做应用可能只能是照猫画虎;所以下面的任务就是把esp8266和net的代码学习一下,看懂了再进行下一步

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /2 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-11-24 17:25 , Processed in 0.143593 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部