天嵌 ARM开发社区

 找回密码
 注册
查看: 14364|回复: 34

第一个裸跑程序的建立步骤

[复制链接]
亚瑟王 发表于 2009-3-11 13:34:11 | 显示全部楼层 |阅读模式
这里只讲步骤和方法,没有贴具体的源码出来。
首先复制一份光盘里面的无OS测试程序,命名为:led,我们要实现点亮LED灯的实验。
1、删除src目录下面的除去2440addr.inc,2440init.s,2440lib.c,2440slib.s,Memcfg.inc,Option.inc,mian.c之外的所有文件。
2、然后将2440addr.inc,2440init.s,2440lib.c,2440slib.s,Memcfg.inc,Option.inc复制到新建立的lib目录下。
3、修改main.c文件,在里面的main函数中实现点亮LED的C语言的代码。
4、建立一个ADS下的项目,添加上刚刚剩余的文件,然后编译。
注意:这样编译肯定会有很多错误的,我们需要根据错误修改对应的文件,其实就是因为剩余的这几个文件还保留了以前的信息所致,简单删除操作就可以解决。
5、编译OK之后,使用uboot的a功能烧写镜像到Nand Flash,然后重启即可。
zzcc209 发表于 2009-3-11 21:46:26 | 显示全部楼层
我试试看。
shan275 发表于 2009-4-30 18:49:29 | 显示全部楼层
能不能贴个简单的程序出来,我们现在刚开始学ARM7,但是手上是TQ2440,刚开始想拿他当单片机用,可是入门有点难,所以想请你们搞些简单的程序,像个LED,或者蜂鸣器都可以,手册里面有无OS程序,可都是在一起的,对我们新手来说移植都是个问题,所以请你帮帮忙,谢谢!
madgood 发表于 2009-5-6 20:00:55 | 显示全部楼层
恩,试了试
100个ERROR

努力调试中:L
zzcc209 发表于 2009-5-6 22:58:09 | 显示全部楼层
楼上的不错啊,一百个!?
madgood 发表于 2009-5-10 17:25:32 | 显示全部楼层
我自己写了个程序,在AXD上仿真没有问题,正常.但是用u-boot控制台把bin文件用[a]功能烧到NAND FLASH之后就不工作了.这是什么原因呢?是不是我的工程环境设置有问题?
我也试过直接把这个bin文件当做U-BOOT烧到NOR FLASH 或NAND FLASH 但是都不能工作起来.

我的程序是:
GPBCON      EQU  0x56000010     ; Port B control
GPBDAT      EQU  0x56000014     ; Port B data
GPBUP       EQU  0x56000018     ; Pull-up control B




        AREA        LED,CODE,READONLY
       
        ENTRY
GO
       
        LDR        R1,=GPBCON
        LDR R0,=0xFFFD57FD  ;将I/O  GPB5~8设置输出
        STR        R0,[R1]
       
        LDR R1,=GPBDAT
        LDR R0,=0xA0           ;将LED2,LED4点亮
        STR R0,[R1]
        BL        _DELAY       ;调用延时
       
        LDR R0,=0x140        ;将LED1,LED3点亮
        STR R0,[R1]
       
        BL        _DELAY          ; 调用延时
       
        B        GO                   ;循环
       
_DELAY                         ;延时子程序

        LDR        R2,=0xFFFFFF
_D1
        SUB        R2,R2,#1
        CMP        R2,#0
        BNE _D1
        MOV PC,LR

       
        END
guizhang001 发表于 2009-5-20 21:29:27 | 显示全部楼层
我怎么下载不进去啊?
thinke365 发表于 2009-11-1 18:01:25 | 显示全部楼层
需要把裸跑程序写到板子上吗?
这样会把原来的系统覆盖掉吗?
jonnyju 发表于 2009-11-10 21:50:47 | 显示全部楼层
楼主传个LED的裸奔程序上来吧
sunhy1021 发表于 2009-11-11 09:44:17 | 显示全部楼层
9# jonnyju


给你一个!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
jonnyju 发表于 2009-11-11 12:40:26 | 显示全部楼层
thank you
看下先
jonnyju 发表于 2009-11-11 13:06:51 | 显示全部楼层
有错误啊,
Eorror  : L6218E:Undefined symbol PCLK (referred form 2440lib.o)
thinke365 发表于 2009-11-11 14:06:36 | 显示全部楼层
恩,试了试
100个ERROR

努力调试中:L
madgood 发表于 2009-5-6 20:00

调试成功了吗?
thinke365 发表于 2009-11-11 14:07:13 | 显示全部楼层
这里只讲步骤和方法,没有贴具体的源码出来。
首先复制一份光盘里面的无OS测试程序,命名为:led,我们要实现点亮LED灯的实验。
1、删除src目录下面的除去2440addr.inc,2440init.s,2440lib.c,2440slib.s,Memcf ...
亚瑟王 发表于 2009-3-11 13:34

使用uboot的a功能烧写镜像到Nand Flash。。。
那原来的系统会没掉的吧?
xuehui869 发表于 2009-11-11 15:00:30 | 显示全部楼层
我传一个,其实只需要2440addr.h即可,完全是个单片机的开发环境。大不了库文件全不用,自己找着PDF配置地址就是了。。。
start.s文件
IMPORT Main
AREA Init,CODE,READONLY
ENTRY
bl  Main
b .
END

main.c文件:
//#include"2440addr.h"

#define rGPBCON    (*(volatile unsigned *)0x56000010)        //Port B control
#define rGPBDAT    (*(volatile unsigned *)0x56000014)        //Port B data
#define rGPBUP     (*(volatile unsigned *)0x56000018)        //Pull-up control



void Main()
{unsigned int i,j,k;
rGPBCON = 0x55555555;
rGPBDAT = 0x000000ff;
while(1)
//if(0)
{
  rGPBDAT = 0x00000000;
  
   for(i=0;i<8;i++)
   for(j=0;j<100;j++)
    for(k=0;k<1000;k++);
   
rGPBDAT = 0x000000FF;

   for(i=0;i<8;i++)
   for(j=0;j<100;j++)
    for(k=0;k<1000;k++);
   

}
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-19 18:14 , Processed in 1.031250 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表