5089|8

26

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

参与HELPER2416开发板助学计划-----(3)裸机开发---LED小灯(MDK集成开发环境) [复制链接]

本帖最后由 cf0609 于 2014-8-1 02:06 编辑

S3c2416是arm926ej内核,使用的是armv5指令集,相对于armv4的指令集,指令只是增加了软件断点bkpt,双字加载,存储指令ldrd/strd等。所以只要能编译armv4指令集的编译器都可以用来开发s3c2416.现在常见的编译器iar,mdk,arm-linux-gcc。特别是对于嵌入式linux的开发,几乎全部选用arm-linux-gcc。现在用做裸机方面的开发,因此选用一款windows下的一个集成开发环境更方便。在这里使用mdk,做为裸机方面的开发集成环境。


打开mdk,创建一个新的工程,在先择目标设备时,可以找到这款芯片s3c2416,如(图1)

图1
选择好目标设备后,点击ok。工程创建完成。
因为要生成bin文件,还需要在进行下面的设置如(2)
图2
红色方框的内容为:
fromelf --bin "..\output\@L.axf"--output "..\output\@L.bin"
#要结合自己的输出文件路径来设置此项,如:我的xxx.axf编译后在output目录下,可以设置为上面的内容。


options for Target窗口的link选项页还要添加s3c2416_Startup.sct文件如(图3)
图3

s3c2416_Startup.sct中的内容如下:
;*************************************************************
; *** Scatter-Loading Description Filegenerated by uVision ***
;*************************************************************

LR_IROM1 0x40000000 0x00010000  {    ;load region size_region
; Steppingstone 0x40000000,8k size(IROMboot)
ER_IROM1 0x40000000 0x00002000 {  ; load address = executionaddress
  *.o (RESET, +First)
  *(InRoot$$Sections)
  .ANY (+RO)
  }
  ;IRAM 64k-8k = 56k
RW_IRAM1 0x40002000 0x0000E000 {  ; RW data
  .ANY (+RW +ZI)
  }
}

基本的设置完成了,开始编写代码,实现helper2416开发板上的一个用户led闪烁。
在原理图中可以看到如(图4)
图4

在启动分析的那个帖子里面已经说过helper2416的两种启动式,为了方便下面的裸机程序我选择使用IROM SD/MMC 卡启动。

; Internal Memory Base Addresses(IROM boot)
IRAM_BASE EQU  0x40000000  ;IRAM的起始地址,程序被复制到此,然后从这里开始运行

; Watchdog Timer Base Address
WT_BASE  EQU  0x53000000   ;看门狗寄存器地址

; IO port for controling LEDs
GPBCON   EQU   0x56000010  ; GPIO_B的控制寄存器地址
GPBDAT    EQU  0x56000014  
GPBUDP   EQU   0x56000018
GPBSEL    EQU   0x5600001c

;----------------------- CODE----------------------------------

       PRESERVE8       ;当前代码中的数据栈是8字节对齐的
       AREA  RESET, CODE, READONLY
       ENTRY
       ARM             ;使用ARM指令
Start
                  LDR    R0, =WT_BASE  ;关看门狗
                   MOV     R1, #0
                   STR     R1, [R0]

                   BL              GPIO_Init      ;初始化GPIO
Loop         
                   LDR           R1, =GPBDAT   ; led
                   LDR           R2, [R1]
                   ORR          R2, R2, #(1<<1)
                   STR            R2, [R1]      ;

                   LDR           R0, =1000    ;延时大约1s
                   BL              Delay_ms

                   BIC            R2, R2, #(1<<1)   ;led
                   STR            R2, [R1] ;        ;

                   LDR           R0, =1000   ;延时大约1s
                   BL              Delay_ms
                   B              Loop                           

GPIO_Init
                   LDR           R0, =GPBCON
                   LDR           R1, [R0]     ;GPBCON的值读到r1                  
                   BIC            R1, R1, #(0x3<<2)     ;使r1bit[3:2] = 0
                   ORR     R1, R1, #(0x1<<2)     ;使r1bit[3:2] =0x01

                   STR            R1, [R0]               ;设置GPB1为输出

                   LDR           R0, =GPBUDP
                   BIC            R1, R1, #(0x03<<1)  
       ORR     R1, R1, #(0x02<<1)   

                   STR            R2, [R0]            ;设置上拉

                   BX              LR

;软件延时函数r0*1ms
;由于没有设置时钟,用系统上电后默认的时钟
;由于是从IROM SD/MM 卡启动
;OM[0] = 0所以 系统输入时钟为 = 12MHz
Delay_ms
                   STMFDSP!, {R1}
Delay1                        
                   LDR  R1, =30000 ;
Delay2                        
                   SUBSR1, R1, #1 ;
                   BNE  Delay2 ;

                   SUBSR0, R0, #1
                   BNE  Delay1
                   LDMFDSP!, {R1} ;

                   BX   LR

                   END;

把文件添加到工程中,如果没有问题会在output目录下生成led.bin
调整一下led.bin的大小,使用(如图5)
图5

来调整led.bin的大小,调整后的文件大小为8k(很熟悉的一个数字吧,在启动分析里提到过8k哦)。会在文件的当前目录下生面led_1.bin文件。
再使用如(图6)在写sd卡是如果是win7系统要用管理员身份打开此软件,要不然不能使用。
图6

led_1.bin写入到SD卡中。
好像是有点麻烦了,既要调整led.bin的大小,又要烧写到SD卡中,还使用两个不同的软件来做,如果可以这两个过程合并为一次就好了,找时间自己写个这样的小应用程序。

SD卡插入到班子上就可以看到液晶屏下的一个led闪烁了。

由于本人也是学习这方面的知识不久,写的如有不正确或是有异议的地方,欢迎大家批评指正。





                                                                                                                                                        论坛ID:cf0609
                                                                                                                                                        提交时间:2014.08.01



sd写入软件.rar

168.77 KB, 下载次数: 14

最新回复

不错  详情 回复 发表于 2014-8-7 13:37
点赞 关注(1)

回复
举报

2万

帖子

71

TA的资源

管理员

沙发
 
图文并茂,继续加油 :)
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

嗯,,,  详情 回复 发表于 2014-8-2 00:39
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 

回复

554

帖子

0

TA的资源

版主

板凳
 
对于初学者,这是很好的教材,不错!

点评

谢谢,,,我会继续努力的,,,把下面的几篇再写一下,,,  详情 回复 发表于 2014-8-2 00:48
 
个人签名My dreams will go on...
http://www.jyxtec.com
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

4
 
soso 发表于 2014-8-1 10:10
图文并茂,继续加油 :)

嗯,,,
 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

5
 
spacexplorer 发表于 2014-8-1 19:20
对于初学者,这是很好的教材,不错!

谢谢,,,我会继续努力的,,,把下面的几篇再写一下,,,
 
 
 

回复

32

帖子

3

TA的资源

一粒金砂(初级)

6
 
很适合像我这样的初学者
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

7
 
很不错
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(中级)

8
 
MDK的,这个好,看着也舒服,哈哈
 
 
 

回复

1706

帖子

4

TA的资源

纯净的硅(初级)

9
 
不错
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表