打印

准备源代码共享: 用 C 语言重写了一个BOOTLOAD, 芯片12fF683,

[复制链接]
770|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuntian|  楼主 | 2015-7-26 16:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
模拟UART实现全功能, 代码尺寸685byte
搞了好几天, 才搞好, 目前还有点小问题, 需要完善下.
沙发
yuntian|  楼主 | 2015-7-26 16:26 | 只看该作者
2015-07-25 12:02-- Hi-tech 编译器编写单片机 BootLoad程序
        1.由于bootload 程序占用0-0x200空间,所以正常程序编译时,需对ROM加偏移地址.
        2.函数可以用绝对定位方式指定地址,如:
                        void start_ini(void)@0x08
                        则这个函数将会强制编译定位在0x008这个地址
                       
        3.由于这部分程序覆盖了中断地址,因此需要对中断程序进重定向
        4.在BootLoad与正常用户程序应分开编写,对于芯片只需要烧写BootLoad程序即可.
        5.正常用户程序在调试时,不需要对ROM加偏移地址,正常调试即可.调试完成后,需要
                把程序通过BOOTLOAD烧入芯片时,需要加偏移地址编译.
        6.BootLoad可以采用以下方式重定向
                        void interrupt_redirect(void)@0x04        ///这个地址为中断响应地址,如果存在高优先级中断,也可以采用这个方式重定向
                        {
                                #asm LJMP 0x04+(Boot_Load_size)                //直接跳转到重定向地址                               
                        }
        7.BootLoad程序的则上不使用中断,以免造成中断引用混乱
        8.Boot_Load程序应该用超时机制,当指定时间内没有接收到特征触发命令序列时,要退出bootload状态,进入用户程序.
        9.上电后首先执行的程序是BootLoad程序,在设定时间到达后,没有特征命令序列时,才能执行用户程序,这样就可以保证
                任意情况下都可以重新写入新程序.
        10.考虑到代码安全的原因,BootLoad程序禁止响应读Flash命令,以免用户程序被恶意读出.
        11.由于bootload需要放在指定的程序空间,所以在编译器ROM Range设置[default,-300-fff]

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

178

帖子

1

粉丝