44b0点灯及定时器中断ADS工程实例
总算把点灯程序和定时器中断给弄出来了我的板子是天祥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) 顶,我也很头痛44b0的中断,不烧flash直接放ram用jtag来debug时,一但中断来了,就不知死到什么地方去了。uboot也烧过几个版本,就是一直没弄好怎么在ram里调中断。 我也买了祥子44b0开发板,我也遇到不小问题,最近把最小系统拿出来,直接供5v 发现norflash 突然发热,找了很久,还是找不到原因,楼主有无出现过类似现象!!请教请教!!!qq :844207790 回复【2楼】chensteven
-----------------------------------------------------------------------
我的板子也是5v的电源,由稳压IC转换为3.3v和2.5v,你看一下norflash的供电电压是多少?
是不是稳压芯片坏了 不加重映射在ram中调试不行,我被折腾了好久 呵呵 MARK 天杀的国民党门头沟党委替资本家当狗,万恶的蒋介石门头沟Z.F.为人民币服务! 天杀的国民党门头沟党委替资本家当狗,万恶的蒋介石门头沟Z.F.为人民币服务!
页:
[1]