首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

arm C语言 s3c2410a解决方案

2013-01-07 
arm C语言 s3c2410a对arm进行从语言开发时 怎么知道C语言中对寄存器的定义,头文件中有么,去哪里找s3c2410a

arm C语言 s3c2410a
对arm进行从语言开发时 怎么知道C语言中对寄存器的定义,头文件中有么,去哪里找s3c2410a头文件
初学arm请高手指教
[解决办法]
我认为网上应该很多,要不结合datasheet自己定义?
[解决办法]
随便在网上找个例程里就有
如果不闲麻烦的话,也可以自己写,呵呵

[解决办法]
去UBOOT,VIVI里有现成的,网上一搜一大把!
[解决办法]
CPU的寄存器不方便在C里面访问,外围的寄存器可以很方便的用C访问.
[解决办法]
通常在.h和.inc的头文件里边定义。
[解决办法]
可以看一下别人的代码,比如网上的一些BOOTLOADER。
[解决办法]
// Memory control 
#define rBWSCON    (*(volatile unsigned *)0x48000000) //Bus width & wait status
#define rBANKCON0  (*(volatile unsigned *)0x48000004) //Boot ROM control
#define rBANKCON1  (*(volatile unsigned *)0x48000008) //BANK1 control
#define rBANKCON2  (*(volatile unsigned *)0x4800000c) //BANK2 cControl
#define rBANKCON3  (*(volatile unsigned *)0x48000010) //BANK3 control
#define rBANKCON4  (*(volatile unsigned *)0x48000014) //BANK4 control
#define rBANKCON5  (*(volatile unsigned *)0x48000018) //BANK5 control
#define rBANKCON6  (*(volatile unsigned *)0x4800001c) //BANK6 control
#define rBANKCON7  (*(volatile unsigned *)0x48000020) //BANK7 control
#define rREFRESH   (*(volatile unsigned *)0x48000024) //DRAM/SDRAM refresh
#define rBANKSIZE  (*(volatile unsigned *)0x48000028) //Flexible Bank Size
#define rMRSRB6    (*(volatile unsigned *)0x4800002c) //Mode register set for SDRAM
#define rMRSRB7    (*(volatile unsigned *)0x48000030) //Mode register set for SDRAM

// USB Host
// Control and Status group
#define rHcRevision (*(volatile unsigned *)0x49000000) 
#define rHcControl  (*(volatile unsigned *)0x49000004) 
#define rHcCommonStatus(*(volatile unsigned *)0x49000008) 
#define rHcInterruptStatus  (*(volatile unsigned *)0x4900000c) 
#define rHcInterruptEnable(*(volatile unsigned *)0x49000010) 
#define rHcInterruptDisable (*(volatile unsigned *)0x49000014)
// Memory pointer group
#define rHcHCCA  (*(volatile unsigned *)0x49000018)
#define rHcPeriodCuttentED  (*(volatile unsigned *)0x4900001c) 
#define rHcControlHeadED    (*(volatile unsigned *)0x49000020)
#define rHcControlCurrentED(*(volatile unsigned *)0x49000024) 
#define rHcBulkHeadED  (*(volatile unsigned *)0x49000028)
#define rHcBulkCurrentED    (*(volatile unsigned *)0x4900002c)
#define rHcDoneHead    (*(volatile unsigned *)0x49000030)
// Frame counter group 
#define rHcRmInterval(*(volatile unsigned *)0x49000034) 


#define rHcFmRemaining (*(volatile unsigned *)0x49000038)
#define rHcFmNumber    (*(volatile unsigned *)0x4900003c)
#define rHcPeriodicStart(*(volatile unsigned *)0x49000040)
#define rHcLSThreshold(*(volatile unsigned *)0x49000044) 
// Root hub group 
#define rHcRhDescriptorA(*(volatile unsigned *)0x49000048)
#define rHcRhDescriptorB    (*(volatile unsigned *)0x4900004c)
#define rHcRhStatus    (*(volatile unsigned *)0x49000050)
#define rHcRhPortStatus1(*(volatile unsigned *)0x49000054) 
#define rHcRhPortStatus2(*(volatile unsigned *)0x49000058)


// INTERRUPT
#define rSRCPND     (*(volatile unsigned *)0x4a000000) //Interrupt request status
#define rINTMOD     (*(volatile unsigned *)0x4a000004) //Interrupt mode control
#define rINTMSK     (*(volatile unsigned *)0x4a000008) //Interrupt mask control
#define rPRIORITY   (*(volatile unsigned *)0x4a00000c) //IRQ priority control
#define rINTPND     (*(volatile unsigned *)0x4a000010) //Interrupt request status
#define rINTOFFSET  (*(volatile unsigned *)0x4a000014) //Interruot request source offset
#define rSUBSRCPND  (*(volatile unsigned *)0x4a000018) //Sub source pending
#define rINTSUBMSK  (*(volatile unsigned *)0x4a00001c) //Interrupt sub mask

[解决办法]
你可以看看三星自己用ADS写的那个测试程序,大部分功能都用到了,或者上网下载一些demo吧
[解决办法]
可以用别人的看看 自己写挺麻烦的 

热点排行