从LM3S到LM4F TM4C ARM Cortex-M4 : Migrating Software Projects from StellarisWare® to TivaWare™
2013-07-23 15:18
453 查看
TI 已经Not Recommand for New Design (NRND) 不推荐新的设计应用LM3S,原来LM3S的产品主页也已经从TI的产品线中撤下。现在主推TM4C(刚开始称为LM4F,现在正式换为TM4C)。TM4C的性能更高,价钱更低(相同性能,其价格与ST接近)——有必要从昂贵的LM3S迁移到TM4C。
本文记录了从LM3S迁移到TM4C的过程。LM3S的固件为Stellarisware,TM4C的固件为TivaWare。
总的思想是:不管是在M3还是M4开发中,尽量用驱动库的接口Driver Library APIs,以利用驱动库提供的应用接口的延续性来实现应用程序升级。
当从M3迁移到M4后,在M3的软件工程中,用M4的驱动库替代M3的驱动库,这样就已经完成了大部分的软件迁移工作,剩下的就是资源配置修改工作了。因为,从M3到M4,虽然硬件发生本质变化,但驱动库同时也配合硬件变化做了改动,并且驱动库变化的同时保持了提供给用户相同的接口,因此用户软件不需要大幅修改。
1,在迁移之前,让我们来看看当前的TM4C与LM3S的异同
参考文件:
《Differences Among Stellaris® LM3S and Tiva™ C Series TM4C123x MCUs》
《Transitioning Designs from Stellaris® to Tiva™ C Series Microcontrollers》讲具体的各个外设变化
1)PB7 由LM3S的NMI变为普通I2C接口
2)Reset的操作有调整。但是StellarisWare 和 TivaWare的驱动库接口(Driver Library APIs)会自动处理这个调整。
3)核心电压降到了1.2,不过是由内部LDO来处理的。整个片子为单3.3V供电。
4)主晶振频率接受5~25MHZ。
5)增加了外设准备好的寄存器Peripheral Ready Registers
6)增加了动态功耗管理,深度睡眠时消耗电流约为1mA,Run mode 1 (Flash loop, all peripherals on)消耗电流为50mA,均比LM3S低50%或以上
7)RTC,时钟管理,休眠和电池管理变化很大,凸显TM4C低功耗的决心
8)增加了EEPROM,目前是2KB
9)对ROM一如既往的支持,但不支持SafeRTOS
10)目前没有TM4C支持Ethernet和I2S。但根据TI的资料显示,LM3S所有外设功能将会在TM4C的其他系列新品中实现。
(TM4C Roadmap)
11)GPIO的最大变化是针对ADC和DMA。支持任意GPIO作为ADC的trigger。
12)PWM,Watchdog,Timer的功能更为强大
13)ADC的变化有:无内置参考电压(利用3.3V VDDA GNDA作为参考电压),不能设置ADC分辨率,新支持dither控制,输入阻抗为500欧姆
14)UART SSI USB变化不大,I2C功能更加齐全
15)完全重新设计的休眠模块,解决了LM3S休眠模块的问题
2,迁移LM3S软件工程到TM4C
参考文件:
《Migrating Software Projects from StellarisWare® to TivaWare》
主要修改的是:
软件工程目录结构和库名称
引入C99数据类型
Hungarian prefixes变化导致很多数据结构变化
增加GPIO导致的port number变化
USB device初始化方法简化了
移除TivaWare不支持的函数和标记
具体修改步骤:
安装TivaWare,复制M3的工程到Tiva下。例如,如果M3工程在C:\StellarisWare\boards\<your board>\<your app>, 复制它到C:\ti\TivaWare_C_Series_1.0\boards\<your board>\<your app>.
为了使用C99数据类型,添加相应头文件#includes for <stdint.h> and <stdbool.h>到所有源文件顶部。
全局替换"tTime"为"struct tm"
全局替换"tBoolean"为"bool"
更改port number
更改器件型号及其头文件
替换各种库文件,修改编译路径
移除不支持的函数和标记,具体见参考文件的第8页到12页
3,开始全新的TM4C硬件设计
参考文件:《Tiva™ C Series MCU System Design Guidelines》
该参考资料主要是关于PCB布线方面。
本文记录了从LM3S迁移到TM4C的过程。LM3S的固件为Stellarisware,TM4C的固件为TivaWare。
总的思想是:不管是在M3还是M4开发中,尽量用驱动库的接口Driver Library APIs,以利用驱动库提供的应用接口的延续性来实现应用程序升级。
当从M3迁移到M4后,在M3的软件工程中,用M4的驱动库替代M3的驱动库,这样就已经完成了大部分的软件迁移工作,剩下的就是资源配置修改工作了。因为,从M3到M4,虽然硬件发生本质变化,但驱动库同时也配合硬件变化做了改动,并且驱动库变化的同时保持了提供给用户相同的接口,因此用户软件不需要大幅修改。
1,在迁移之前,让我们来看看当前的TM4C与LM3S的异同
参考文件:
《Differences Among Stellaris® LM3S and Tiva™ C Series TM4C123x MCUs》
《Transitioning Designs from Stellaris® to Tiva™ C Series Microcontrollers》讲具体的各个外设变化
1)PB7 由LM3S的NMI变为普通I2C接口
2)Reset的操作有调整。但是StellarisWare 和 TivaWare的驱动库接口(Driver Library APIs)会自动处理这个调整。
3)核心电压降到了1.2,不过是由内部LDO来处理的。整个片子为单3.3V供电。
4)主晶振频率接受5~25MHZ。
5)增加了外设准备好的寄存器Peripheral Ready Registers
6)增加了动态功耗管理,深度睡眠时消耗电流约为1mA,Run mode 1 (Flash loop, all peripherals on)消耗电流为50mA,均比LM3S低50%或以上
7)RTC,时钟管理,休眠和电池管理变化很大,凸显TM4C低功耗的决心
8)增加了EEPROM,目前是2KB
9)对ROM一如既往的支持,但不支持SafeRTOS
10)目前没有TM4C支持Ethernet和I2S。但根据TI的资料显示,LM3S所有外设功能将会在TM4C的其他系列新品中实现。
(TM4C Roadmap)
11)GPIO的最大变化是针对ADC和DMA。支持任意GPIO作为ADC的trigger。
12)PWM,Watchdog,Timer的功能更为强大
13)ADC的变化有:无内置参考电压(利用3.3V VDDA GNDA作为参考电压),不能设置ADC分辨率,新支持dither控制,输入阻抗为500欧姆
14)UART SSI USB变化不大,I2C功能更加齐全
15)完全重新设计的休眠模块,解决了LM3S休眠模块的问题
2,迁移LM3S软件工程到TM4C
参考文件:
《Migrating Software Projects from StellarisWare® to TivaWare》
主要修改的是:
软件工程目录结构和库名称
引入C99数据类型
Hungarian prefixes变化导致很多数据结构变化
增加GPIO导致的port number变化
USB device初始化方法简化了
移除TivaWare不支持的函数和标记
具体修改步骤:
安装TivaWare,复制M3的工程到Tiva下。例如,如果M3工程在C:\StellarisWare\boards\<your board>\<your app>, 复制它到C:\ti\TivaWare_C_Series_1.0\boards\<your board>\<your app>.
为了使用C99数据类型,添加相应头文件#includes for <stdint.h> and <stdbool.h>到所有源文件顶部。
全局替换"tTime"为"struct tm"
全局替换"tBoolean"为"bool"
更改port number
更改器件型号及其头文件
替换各种库文件,修改编译路径
移除不支持的函数和标记,具体见参考文件的第8页到12页
3,开始全新的TM4C硬件设计
参考文件:《Tiva™ C Series MCU System Design Guidelines》
该参考资料主要是关于PCB布线方面。
相关文章推荐
- 从LM3S到LM4F TM4C ARM Cortex-M4 : LM3S的ADC的测试
- 从LM3S到LM4F TM4C ARM Cortex-M4 : grlib图形显示
- [转] 高性能嵌入式处理器时代来临!多家中国芯片设计公司选择ARM® Cortex™-A9和Mali™图形处理器技术
- TrustZone Example for Versatile Express Cortex-A9x4 and VE-A9x4 FVP model - ARM®DS-5™
- Migrating a Project to Delphi Prism from Delphi.NET
- Applying Project Management Strategies to Software, Hardware, and Integration Initiatives
- Could not load project* from super dev mode server when deployed to weblogic/jboss/tomcat?
- Kinetis ARM Cortex-M4 的一些常见问题
- invalid conversion from 'const char*' to 'char*'
- [ERROR] SSL error: Unable to get private key from 'server-key.pem'
- System error &H80004015 - This class is configured to run as a security id different from the caller.
- How to search for a taglib's code (from wiki)
- Type mismatch: cannot convert from Enumeration<String> to Enumeration<Object>
- Video Conferencing features of Intel® Media Software Development Kit
- cast from 'void *' to 'int' loses precision
- error C2440:cannotconvertfrom 'void (__thiscall CMainFrame::*)'to'LRESULT(__thiscall CWnd::*)
- Unable to get the project ile from the web server的解决方法
- 用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall
- 基于ARM 构架(带MMU)的copy_from_user与copy_to_user详细分析
- 【书籍推荐】Migrating to Swift from Android