Chinaunix首页 | 论坛 | 博客
  • 博客访问: 851118
  • 博文数量: 213
  • 博客积分: 5048
  • 博客等级: 大校
  • 技术积分: 1883
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-14 10:14
文章分类

全部博文(213)

文章存档

2011年(4)

2010年(55)

2009年(47)

2008年(107)

我的朋友

分类: 嵌入式

2009-11-08 10:46:56

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) |
0

上一篇:xmodem

下一篇:CRC

给主人留下些什么吧!~~

wbstsa2009-11-09 18:05:39

我现在在自学msp430,看你的文章感觉我学的好表面啊~~~