|
总算把点灯程序和定时器中断给弄出来了
我的板子是天祥44b0的, 板子预先烧写了uboot, 调定时器中断的时候, uboot把中断入口映射到了sdram入口, 所以在main.c函数里有一个中断向量重映射;不
知道是uboot里面没有映射向量中断表还是其他原因, 向量中断一直进不去, 现在还不清楚是怎么回事?
用AXD调试的时候flash有uboot,得把中断重映射语句加上 (ARM Linker>RO Base 设为 0x0c008000 RW Base 不填)
烧写到flash里面的时候, 去掉中断重映射语句, (ARM Linker>RO Base 设为 0x00 RW Base 设为 0x0c008000 image entry point 设为 0x00)
不过我的ADS1.2不能生成*.bin文件, 只能生成 intel 32 bit hex文件,晕的厉害, 用flash programmer把fled.hex烧入flash就行了
/********************************************************************/
extern char Image$$RO$$Base[];
void Isr_Init(void)
{
unsigned int cc;
pISR_UNDEF = (unsigned)HaltUndef;
pISR_SWI = (unsigned)HaltSwi;
pISR_PABORT = (unsigned)HaltPabort;
pISR_DABORT = (unsigned)HaltDabort;
//中断向量重映射
for (cc = _RAM_STARTADDRESS;cc <= (_RAM_STARTADDRESS + 0xc0);cc += 4)
{
*((volatile unsigned *)cc) = 0xEA000000 + ((unsigned int)Image$$RO$$Base - 0x0c000000 - 8) / 4;
}
//rINTCON=0x1; // Vectored Int. IRQ enable,FIQ disable
rINTCON = 0x5; // Non-vectored,IRQ enable,FIQ disable
rINTMOD = 0x0; // All=IRQ mode
rINTMSK |= BIT_GLOBAL | BIT_TIMER0; // All interrupt is masked.
}
/******************************************************************************/
bootloader(44binit.s) 和控制台程序(44lib.c)是开发板带的, 看懂就行
我自己把bootloader重写了一遍, 加上中文注解, 死活有问题, 后来没办法了 去掉中文注解就好了
实在不明白ads汇编程序竟然不支持中文注释
有一本电子书ARM STEP BY STEP 挺不错的, 一并上传!
ads1.2工程文件ourdev_558872.rar(文件大小:145K) (原文件名:firetled.rar)
点击此处下载 ourdev_558873.pdf(文件大小:2.13M) (原文件名:ARM编程起步.pdf) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|