mini2440第一个裸机程序

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宏即可

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

时间: 2024-08-30 05:33:55

mini2440第一个裸机程序的相关文章

编写第一个裸机程序

一. ARM裸机之Makefile 1.1. Makefile 分析 led.bin: led.o arm-linux-ld -Ttext 0x0 -o led.elf $^ arm-linux-objcopy -O binary led.elf led.bin arm-linux-objdump -D led.elf > led_elf.dis gcc mkv210_image.c -o mkx210 ./mkx210 led.bin 210.bin %.o : %.S arm-linux-g

ARM裸机程序之LED灯

从3月份开始看arm的裸机程序,到现在一个半月了,做到后来,发现自己越做到综合的程序,越吃力,还是得回头看看,为了最终写一个bootloader打下点基础吧,所以以这篇文章为开始,总结一下之前做过的裸机程序,希望会有所收获,我用的开发板是友善之臂的mini2440. 首先声明一点我都是在linux环境下写裸机程序的,因为这样能知道更多底层的东西,不过在这里面写就是有点不方便的是调试的时候,所以你程序要是调试不出来,你得把程序移植到一些编译器里调试(请注意移植的时候格式有点不同),所以偶尔在kei

ARM入门实践(一)----Mini6410上最简单的LED点灯裸机程序

Mini6410上最简单的LED点灯裸机程序 : 实验环境: 根据友善教程,要用ADS,据说现在都不用这个了,但是为了打开友善给的mcp工程,就下了一个,Win7下弄上兼容模式和管理员权限,再下一个SecureCRT代替超级终端. 一定要,把AXD也设置上. secureCRT的配置:选择Serial串口,波特率115200,端口号:USB转串(去驱动程序查端口号,今天插了一个COM4,一个COM5) 实验步骤: 配置好了以后,打开CodeWarrior编译mini6410-led.bin文件

ok6410[002] ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境

ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境 系统:  ubuntu16.04 裸板: 飞凌公司OK6410开发板 目标:搭建基于ubuntu1604系统和基于RAM的裸机程序开发环境 1.安装配置ckermit 在ubuntu1604下一般做裸板开发时都是使用ckermit作为远程通讯终端,下面我们就开始讲解下其安装与配置. 1.1.安装ckermit 在ubuntu系统下安装ckermit,使用 sudo  apt-get  install  ckermi

I2C协议->裸机程序->adapter驱动程序分析

开发板:mini2440 内核  :linux2.6.32.2 参考  :韦东山毕业班I2C视频教程 1.i2c协议简要分析 i2c中线是一种由 PHILIPS 公司开发的串行总线,用于连接微控制器及其外围设备,它具有以下特点. 1.只有两条总线线路:一条串行数据线SDA,一条串行时钟线SCL. 2.每个连接到总线的器件都可以使用软件根据它的唯一的地址来确定. 3.传输数据的设备之间是简单的主从关系. 4.主机可以用作主机发送器或者主机接收器. 5.它是一个真正的多主机总线,两个或多个主机同时发

nandflash裸机程序分析

原文: nandflash裸机程序分析 它包含7个文件: head.S init.c main.c Makefile nand.c nand.lds 我们之前的程序都是在nandflash的前4k放代码,上电后自动拷贝到SRAM中,之后将SRAM中的代码拷贝到SDRAM中.可是当我们的程序太大超过4k的时候就不行了,因为无法将nandflash的代码完全拷贝到SRAM中去,这时就需要从nandflash中拷贝代码了. 本程序里面我们要实现的就是:将一部分代码放在nandflash的4096之后,

spi协议->裸机程序->master驱动程序分析

SPI协议参考: SPI协议及其工作原理浅析 http://bbs.chinaunix.net/thread-1916003-1-1.html SPI总线协议及SPI时序图详解 http://blog.163.com/sunshine_linting/blog/static/44893323201181482335951 一.概述 SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上

第一个单片机程序(C言语编写)

忙活了半天,预备任务做了那么多,终于要编写我们的程序代码了.假如学过 C 言语的话,你应当很轻松的跟着我的编程本人写出来,假如没学过 C 言语也没紧要,你先照着我的抄,我会在适宜的地位写出来对 C 言语语法的说明,如许抄几回后再看看说明,就应当很明确了,抄的时分必定要仔细,特别标点符号弗成以搞错.第一个单片机程序: #include <reg52.h> //包括特别功用存放器界说的头文件 sbit LED = P0^0; //位地址声明,留意:sbit 必需小写.P 大写! void main

嵌入式Linux之旅——环境搭建篇之烧写裸机程序

本小节将介绍如何使用oflash和openjtag烧写裸机程序.oflash也支持并口烧写,方法与openjtag类似.如果你想使用jlink烧写,需要安装SEGGER的J-Flash的工具,这里我们就不多介绍. 首先需要先安装oflash,oflash由开发板厂商提供或者从网上下载.将oflash加上可执行权限,拷贝到“/usr/bin”目录下即可.命令如下: sudo cp oflash /usr/bin/ && sudo chmod +x /usr/bin/oflash 下面就是具体