了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序)。

  由于有了RH850 F1KM bootloader的经验,F1L C语言bootloader的开发比较顺利。由于上位机是HyperTerminal, 这个bootloader 我叫它hyperbootloder_F1L, 下面就简单介绍下,相比较hyperbootloader_F1KM, 它有以下不同

1. hdwinit

2. memory map

3. FCL 宏

首先介绍hdwinit的不同,在boot.asm文件中,代码都是汇编,但是看懂问题不大。比较坑人的是,新建CS+工程时,已经选择了正确的芯片型号,完了,自动生成的boot.asm文件中hdwinit, 既然还有以下提示:

;-----------------------------------------------------------------------------
; hdwinit
; Specify RAM addresses suitable to your system if needed.
;-----------------------------------------------------------------------------

CS+, 太蠢,为什么就不能生成不用调整直接就可以用的呢? 通过查看datasheet后,我的改动如下

RETENTION_RAM_ADDR    .set    0xfee00000
RETENTION_RAM_END .set 0xfee07fff .align 2
_hdwinit:
mov lp, r14 ; save return address mov RETENTION_RAM_ADDR, r6
mov RETENTION_RAM_END, r7
jarl _zeroclr4, lp ; clear Retention RAM mov r14, lp
jmp [lp]

接下来是介绍memory map的不同, F1KM R7F701684 是1M 的code flash, 容量非常大,memory map 随手定义的,bootloader 是 0~0x17FFF, application 是 0x18000 ~ 0xFFFFF。 bootloader 实际上不需要那么大的空间。F1L我用的是 R7F701011, code flash 只有256K的容量,所以我重新规划了memory map, bootloader 区间是0~0x0FFFF, application 区间是 0x10000~0x3FFFF. 其实bootloader区间还可以继续缩小。

接下了就是最大的坑了,在FCL library 里面有个文件 fcl_cfg.h. 在这个文件中一定不能define R_FCL_NO_BFA_SWITCH, 否则调用FCL API时一直会有exception. debug时的现象就是FCL OPEN时会跳到exception handler (中断程序)中去,具体是哪种exception我没有去探究。总之这个一定要注意,在FCL user manual中有提到F1KM 等一些芯片需要得define R_FCL_NO_BFA_SWITCH 这个宏。 F1L 不需要,所以一定不要define.

//#define R_FCL_NO_BFA_SWITCH

hyperbootloder_F1L 和 hyperbootloader_F1KM 一样非常简单好用,不需要写上位机,直接用超级终端hyperTerminal就可以,很适合实验室或开发阶段使用。

最新文章

  1. SQL Server 堆表行存储大小(Record Size)
  2. JS中的进制转换以及作用
  3. ServiceMix in daemon mode
  4. 关于WPF中RichTextBox失去焦点后如何保持高亮显示所选择的内容
  5. GO语言练习:网络编程 TCP 示例
  6. linux之mysqlimport的哪些变态事儿
  7. Solr多核的配置
  8. JS判断图片是否加载完成三种方式
  9. git 删除远程主分支及其它操作
  10. 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息
  11. java中把list列表转为arrayList以及arraylist数组截取的简单方法
  12. 风险案例-28期-项目Leader与团队成员缺乏沟通,问题响应度较慢导致团队士气低落,工作效率低
  13. String的trim()用于去掉字符串前后的空格
  14. Spring py登陆模块(包含 记录登陆时间,记录ip,增加积分)
  15. 一个简单小技巧实现手机访问.html文件网页效果
  16. 【原创】从策略模式闲扯到lambda表达式
  17. [视频]K8飞刀 exploit管理功能 演示教程
  18. redflag的echarts结构
  19. Mysql的两种引擎
  20. nodejs(二)child_process模块

热门文章

  1. JAVA大数贪心
  2. Python思维导图(二)—— 数据类型
  3. leetcode 最大水池
  4. python接口自动化测试 - openpyxl封装类
  5. 啥叫ORM
  6. doT 这个模板 是怎么实现的?
  7. 剑指Offer对答如流系列 - 重建二叉树
  8. Python学习,第六课 - 集合
  9. 创建dynamics CRM client-side (九) - 用JS来获取look up 信息
  10. HDFS NameNode重启优化