本帖最后由 TsaiRH 于 2020-4-16 19:43 编辑
就一个多月学习bootloader做个记录,同时对lcczg的解答表示感谢。 文中的很多内容摘抄于Microchip 2017 Master的课程《C18H04 21041_BTL1 Lab Manual_cn 1719.pdf》和21ic上lcczg的《给PIC16F18446 curiosity nano板做个bootloader》(https://bbs.21ic.com/forum.html?mod=viewthread&tid=2823060&page=1#pid10883760)教程。 准备: MPLAB X IDE V5.20 XC8 V2.00 PIC16F18446 curiosity nano 开发板 USB串口调试工具 实验1“新建编译应用程序” 1、启动MPLAB X,新建一个项目,编写应用程序,编译下载到板上,验证功能,我这直接使用lcczg提供的led_app.X,功能为led闪烁。 实验2“生成UART自举程序” 1、创建新项目。 器件:PIC16F18446 编译器工具:XC8 V2.00 项目名称:“BTL_V2.0” 2、启动MCC。 3、在System Module(系统模块)窗口中,选择以下振荡器: INTOSC oscillator:I/O function on CLKIN pin。 Internal Clock选择位16MHz_HF。
4、在Device Resources(器件资源)窗口中,选择EUSART1、MEMORY和Bootloader Generator。 5、EUSART1,使能发送和连续接收。代码将使用自动波特率,因此我们不必在此设置。 6、MEMORY,不需要配置。 7、Bootloader Generator (1)、Transport Type:UARTEUSART (2)、Verification:Check_State_Flag。 (3)、Application Reset Vector:0x300, (4)、Enable IO Pin Indicator and Software Protection.
8、Pin Manager Grid (引脚管理器网格) RB7设置TX1,RB5设置RX1,RA2 设置BL_INDICATOR(BOOTLOADER指示灯),Disable所有选中引脚模拟功能。
9、Generate(生成)(忽略警告)。 10、选择project(项目)选项卡,右键单击项目以启动Project Properties(项目属性)窗口。 11、单击XC8 Linker(XC8链接器),选择Memory Model(存储器模型)下拉选项卡,如下配置,这将使自举程序位于存储器的前0x300字中。 12、编译项目 编译失败,错误提示不能找到空间,对空间加点优化。 Non line specific message::: advisory: (1493) updated 32-bit floating-point routines might trigger "can't find space" messages appearing after updating to this release; consider using the smaller 24-bit floating-point types
编译成功。 13、使用板载nEDBG下载。 先做个修改: #define BL_INDICATOR_ON 0 #define BL_INDICATOR_OFF 1 因为板子文档里的说明是接到地(RA2=0)亮,反掉了。 下载到板上,这是LED常亮。
实验3“将自举程序连接到应用程序” 1、创建偏移应用程序 (1)、重新打开led_app.X,创建偏移应用程序。 (2)、转到Project Properties窗口。 (3)、选择XC8 Linker,然后选择Additional options(其他选项)选项卡。 (4)、将项目偏移设置为0x300。单击Apply。 (5)、编译项目。 2、自举偏移应用程序 (1)、用串口调试工具连接好Nano板上的TX、RX,将串口调试工具插到PC的USB口中。 (2)、在官网https://www.microchip.com/promo/8-bit-bootloader最下面右侧下载Bootloader HOST,我们将通过它下载应用程序。 (3)、启动统一自举程序java应用程序。
(4)、在Settings(设置)菜单中,选择Serial(串行),然后正确的UART。
(5)、将端口配置为19200,8个数据位,1个停止,禁止奇偶校验。单击“Apply”关闭窗口。 (6)、自举程序主机按字节地址和长度工作,因此我们必须通过将PIC16字地址乘以2进行转换。将程序存储器大小设置为0x8000,将自举程序偏移设置为0x600。
(7)、选择File Open/Load(文件打开/加载)下拉菜单,打开应用程序的Hex文件。 (8)、点击“Program Device”(编程器件)按钮。最终器件得到与实验1相同的LED等闪烁共能。 实验视频:https://v.youku.com/v_show/id_XNDYzNTA3NjY3Ng==.html
|