There are three options for programming an MSP430 flash device. All options
support in-system programming:
Program via JTAG
Program via the Bootstrap Loader
Program via a custom solution
三种装载程序方便。
为了使用uart装载代码,又不想学习BSL,所以在我的msp430中都是使用自己编写的bootload。
bootload的主用就是通过uart把app代码装载到正确位置,真正有用代码是app代码。
我的bootload主要分为下面五部分:
1.汇编startup
2.msp430芯片初始化
3.等待uart按键,操作主要通过xmodem装载
4.一切芯片寄存器还原到bootload运行前
5.跳转到app代码起始地址。
汇编startup,这部分的主要工作:
初始化sp,把所有的中断地址指向ram中。bootload和app运行前先把中断拷贝到这部分ram中。这部分由于是startup程序,所以是汇编。
msp430芯片初始化,boot_init程序主要工作:
开看门狗(从此要注意喂狗)
把中断程序地址到拷贝到设置ram中
初始化系统时钟
初始化led指示灯
初始化计时器,flash,uart。
使能中断
等待按键,主要是等待u键,等待2s,按下就会调用xmodem协议,准备接收app代码。
xmodem可以参考http://blog.chinaunix.net/u2/66435/showart_2089201.html
还原寄存器,这是使得bootload和app独立。把app的中断向量表拷贝到ram中。
跳转到app的起始地址App_Startup()。
主要使用下面两个宏:
#define App_Reset (*(volatile unsigned short *)0x03FE)
#define App_Startup (*(void (*)(void))App_Reset)
阅读(2306) | 评论(6) | 转发(0) |