MB9BF218S 又是我玩过的一个巨冷门的处理器, Fujitsu的cortex-M3,1MB Flash+128KB RAM 现在Fujitsu卖给了Spansion主频144MHz 价格倒是相当公道, 利尔达独家代理。RT-Thread 很早就听说了,当时在考虑要不要port 一个解析器到218s上的时候有发现已经有人做了lua在RT-Thread上,真心觉得不错。后来开始小批量的时候,公司里突然多了好多部门开始要求加这个加那个的,量产功能,测试功能,不得不考虑做个比较牛逼一点的平台上去,以后才好节省port第三方的库和debug的时间。
首先是下载RT-Thread代码包, 官网上抓就可以了,现在有1.2的稳定版和2.0的beta版本。这里我选的是2.0 beta版,解压完后进入bsp目录下。拷贝一份mb9bf506r目录,重新命名为mb9bf218s,运行project.uvproj,这里还有个template.uvproj, 打开后是空项目,不知道有毛线用?打开后Device选项选MB9BF218S,当然如果用别的处理器,就选相应的平台。
其实这样也就可以了506r和218s的startup 和寄存器定义基本上是可以通用的,我还是强迫症滴吧218s的库加进了工程目录。
1. 创建如下三个目录
bsp\mb9bf218s\libraries\Device\FUJISTU\MB9BF218s
bsp\mb9bf218s\libraries\Device\FUJISTU\MB9BF218s\Include
bsp\mb9bf218s\libraries\Device\FUJISTU\MB9BF218s\Source
system_mb9bf21x.c 和 startup_mb9bf21x.s 文件放置于Source目录下
system_mb9bf21x.h, mcu.h和mb9bf218s.h 文件放置于Include下面
2. 替换引用目录
将libraries\Device\FUJISTU\MB9BF506r\Include 中的MB9BF506r替换层MB9BF218s
3. 替换项目中的源文件
将项目源文件目录CMSIS里面的两个文件替换成刚才新建的MB9BF218s\Source\中的两个文件
4. 最后就是将所有对 mb9bf506r.h 的引用替换成 mb9bf218s.h, 这个时候就可以开开心心的编译下载了。
起步工作结束后, 我们来点个灯吧。 我的硬件板已经不是原厂的开发板了。我们自己layout了一遍,接了zigbee模块和si4463,最类似于philip hue的智能照明以及433MHz遥控开关面面板的控制中心,我的小板板有4个LED,其中一个是双色等,勉强当他是5个小灯灯吧。修改LED 要动的只有led.c 和led.h 两个文件,真真是简单极了。原厂参考板用的是P19、P1A、P1B三个IO口点灯灯,我们的硬件工程师偏偏奇葩的用了P14-P18, 就是跟你不一样。首先是led.h 文件,添加了LED4和LED5的定义。
修改LED 要动的只有led.c 和led.h 两个文件,真真是简单极了。原厂参考板用的是P19、P1A、P1B三个IO口点灯灯,我们的硬件工程师偏偏奇葩的用了P14-P18, 就是不走寻常路。
首先是led.h 文件,添加了LED4和LED5的定义
#define USER_LED1 (1UL<<0x8)
#define USER_LED2 (1UL<<0x7)
#define USER_LED3 (1UL<<0x6)
#define USER_LED4 (1UL<<0x5)
#define USER_LED5 (1UL<<0x4)
#define USER_LED_MASK (USER_LED1 | USER_LED2 | USER_LED3 | USER_LED4 | USER_LED5)
Led.c 文件修改的就更简单了, 三个函数rt_hw_led_on(), rt_hw_led_off(),rt_hw_led_toggle()照葫芦画瓢的吧led4和led5加上就可以了。编译下载后,妥妥的小灯灯就亮起来了。
LED完后考虑的就是串口调试了,串口的驱动在fm3_uart.c and fm3_uart.h 这两个文件当中,当然我们要修改的东西不止这两个文件。
对比富士通原厂的代码,fm3_uart.c 已经被移植的面目全非了。先说一下FM3的串口,丫有8组串口,每一组串口都可以配置到1-4个不同位置的io口上,串口的配置开关由RT_USING_UARTX_Y宏来进行选择,在rtconfig.h 定义; 其中X 表示第[0-7]组的串口控制器,Y[1-4]表示Mux到的哪一组io口。原板中用了Uart0_1 我们的硬件工程师由TM奇葩的给改道了Uart4_1上。
第一步先到rtconfig.h 中定义好串口:
// <bool name="RT_USING_UART4_1" description="Using UART4_1" default="false" />
#define RT_USING_UART4_1
// <string name="RT_CONSOLE_DEVICE_NAME" description="The device name for console" default="uart" />
#define RT_CONSOLE_DEVICE_NAME "uart4"
这样就可以了。。。。