分享

S3C44B0 BIOS的keil CARM版 来自 电脑圈圈的家当

 BeautymengRoom 2013-12-24
S3C44B0 BIOS的keil CARM版   2008-08-31 09:11

/**********************************************************************
说明:S3C44B0 BIOS的keil CARM版
源代码来自互连网,由本人进行了一些修改,使其在keil UV3 2.5A上编译通过。
主要修改的地方在启动文件,FLASH的烧录部分,另外在控制台中增加了几个命令。
硬件平台为: CPU:S3C44B0;SDRAM:HY57V641620;FLASH:29LV160DB;网卡芯片:RTL8019AS。
本软件仅供学习交流使用,不得用于其它用途,否则后果自负。
修改者:computer00
 
Http://Computer00.21ic.org
 Http://www.ednchina.com/blog/computer00

                                              2007-5-10
**********************************************************************/

 

S3C44B0-BIOS-KEIL源代码包下载:/myspace/album/image.php?uid=71663&aid=630&pic=63a454ec&ext=gif&screen=show

该开发板的原理图下载(注意U4和R39不要安装,R8接VCC5.0端改为接地):/myspace/album/image.php?uid=71663&aid=630&pic=63a454ec&ext=gif&screen=show

 

 

又对代码做了一点更改,启动代码s3c44b0x.s中添加了几句判断是否要复制代码的指令,如下,请找到相关部分修改:
;****************************************************************************
;为BDMA改变BDMACON的复位值
;BDMA目的寄存器
BDIDES0     EQU 0x1f80008
BDIDES1     EQU 0x1f80028
 LDR R2, =BDIDES0      
 LDR R1, =0x40000000   ;BDIDESn reset value should be 0x40000000 
 STR R1, [r2]
 LDR R2, =BDIDES1     
 LDR R1, =0x40000000   ;BDIDESn reset value should be 0x40000000 
 STR R1, [r2]
;****************************************************************************
;****************************************************************************
;将FLASH中的代码段(0x1E0000-0x1EFFFF)复制到RAM中(0xC7C0000-0xC7CFFFF)
;如果已经在RAM中运行,则不要复制
    MOV R1,PC
    LDR R2,=0x0C000000   ;SDRAM的起始地址
    CMP R2,R1
    BLS EndCopy
    LDR R1,=0x001E0000   ;BIOS在FLASH中的地址
    LDR R2,=0x0C7C0000   ;BIOS在SDRAM中的地址
    LDR R7,=0x0C7D0000-4 ;BIOS总共64K
LOOP:
    LDMIA R1!,{R3-R6}     ;装入4个字到寄存器中
    STMIA R2!,{R3-R6}     ;将4个字保存到RAM中
    CMP R2,R7            ;比较拷贝是否完成
    BLS LOOP             ;循环
EndCopy:
;****************************************************************************
;自己的代码结束
;****************************************************************************
另外,在main函数中将PortInit();前面的注释去掉,然后找到PortInit()函数,修改成如下代码:
/****************************************************************************
【功能说明】IO端口功能、方向设定
****************************************************************************/
void PortInit(void)
{
 //其它IO在S3C44B0X.s里面已经配置好了。直接使用keil提供的Configuration Wizard设置更方便
 //当然也可以在这里来配置
 rPDATG = 0xff;
 rPCONG = 0x000f; //enable extint0 extint1
 rPUPG  = 0x00;  //enabled pull up register
 rEXTINT = 0x42;   //所有的外部硬件中断为低电平触发, extint0 为下降沿,extint1为上升沿 
 rINTCON = 5;    // non vector mode, irq enable
 rINTMOD = 0;    //all are irq mode 
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多