码迷,mamicode.com
首页 > 其他好文 > 详细

mini2440第一个裸机程序

时间:2019-07-13 09:23:21      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:ref   dia   错误解决   span   一个   去除   编译   efi   err   

 

 mini2440上的LED接口

 技术图片

/*
 * 功能:实现LED1灯循环亮灭
 * LED1--GPB5
 * LED2--GPB6
 * LED3--GPB7
 * LED4--GPB8
 */
#define rGPBCON (*(volatile unsigned long *) 0x56000010)
#define rGPBDAT (*(volatile unsigned long *) 0x56000014)

#define Led1_On        0x1DF
#define Led2_On        0x1BF
#define Led3_On        0x17F
#define Led4_On        0xFF

#define DELAY_CNT     0x3000
void Led_Port_Init( void );

void delay( int t )
{
    while(t>0)
        t--;
}

int main( void )
{
    Led_Port_Init();
    while ( 1 )
    {
        //循环点亮4盏灯
        rGPBDAT = Led1_On;
        delay( DELAY_CNT );
        rGPBDAT = Led2_On;
        delay( DELAY_CNT );
        rGPBDAT = Led3_On;
        delay( DELAY_CNT );
        rGPBDAT = Led4_On;
        delay( DELAY_CNT );    
    }
}

void Led_Port_Init( void )
{
    /* 设置GPB5,6,7,8为输出端口 */
    rGPBCON = 0X15400;
}

打开keil uversion4

新建工程

1. 选择CPU为Samsung/S3C2440A,单击OK

2.在上一步单击完OK后,会弹出下图,该图是为了让你选择是不是将Samsung S3C2440的启动代码复制添加的你的工程文档,可以看到工程文档自动添加了S3C2440.s。

3.新建一个文件。选择File/New,新建一个文件。把上面的C代码复制进去。保存为fisrt.c

4.将first.c文件添加到你的工程,对着Source Group1右击,选择“Add Files to Group "Source Group 1"...”

5.target中,选择Asm,define填入__EVAL。

6.target中,选择linker,去除勾选“use memory layout from target diaglog ”

7.target中,utilities中,setting中,选择flash SST39x 160x Flash  2M

技术图片

8.编译成功后,确保板子是从nor flash启动的,然后点击keil软件的load按钮,就可以看到写入成功。

技术图片

此时程序已经在运行。

我们拔掉jtag线,重启板子,程序将从nor flash载入,开始运行。

 

错误解决:

1)first.axf: Error: L6218E: Undefined symbol Image$$ER_ROM1$$RO$$Length (referred from s3c2440.o).

要解决这个问题只需在options的Asm选项卡中Define选项中添加__EVAL宏即可

技术图片

mini2440第一个裸机程序

标签:ref   dia   错误解决   span   一个   去除   编译   efi   err   

原文地址:https://www.cnblogs.com/souroot/p/11179307.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!