主题 : tiny6410的VIC port裸机程序,gcc编译,用u-boot下载到内存运行——4 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 70668
精华: 0
发帖: 26
金钱: 130 两
威望: 26 点
贡献值: 0 点
综合积分: 52 分
注册时间: 2012-05-23
最后登录: 2021-05-23
楼主  发表于: 2013-01-28 14:15

 tiny6410的VIC port裸机程序,gcc编译,用u-boot下载到内存运行——4

这里是上一个没有用VIC port的程序
tiny6410的VIC裸机程序,gcc编译,用u-boot下载到内存运行——3

start.S编译后生成start.bin 用u-boot下载到内存的0x00000000地址处
tiny6410_VIC.c编译后生成tiny6410_VIC.bin 用u-boot下载到内存0x50000000地址

不过这次go的地址是0x00000000所以下载完后,要执行 go 0就可以运行程序了的。


主要修改:
在.C文件里加了

__asm__ __volatile__("mrc p15,0,r0,c1,c0,0\n""orr r0,r0,#(1<<24)\n""mcr p15,0,r0,c1,c0,0\n":::"r0");

中断服务函数申明变成:
瘀漀椀搀 攀椀渀琀 开3_irq(void) __attribute__ ((interrupt("IRQ")));//GCC里的中断函数申明
主要参考:
ARM11---中断---向量中断控制器(VIC)---结合s3c6410
Declaring Attributes of Functions

在keil昀漀爀愀爀洀下使用gcc
谢谢他们啦~!
附件: tiny6410_VIC_port.rar (9 K) 下载次数:34
级别: 新手上路
UID: 74964
精华: 0
发帖: 29
金钱: 145 两
威望: 29 点
贡献值: 0 点
综合积分: 58 分
注册时间: 2012-07-31
最后登录: 2017-09-13
1楼  发表于: 2013-06-16 21:06
非常感谢楼主的GCC代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
我知道为什么我的程序进入中断函数之后就不行了!!!

就是因为少了这句
void  eint0_3_irq(void) __attribute__ ((interrupt("IRQ")));//GCC里的中断函数申明
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

非常感谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!