第三十三天:Tiny4412驱动开发之LED驱动和u-boot移植

本文介绍了如何移植u-boot到Tiny4412开发板,包括修改配置文件、编译烧录过程。接着展示了在u-boot中编写并执行Hello World程序的步骤,包括汇编和C语言实现。最后,详细讲解了LED驱动的编写,涉及电路图分析和芯片手册查阅,以及C语言代码实现LED闪烁。
摘要由CSDN通过智能技术生成
  从今天开始进入驱动开发的课程的学习,共完成三件事情。一:u-boot的简单移植,二:uboot中编写helloword程序 三:开发板中led灯的驱动编写,包括led点亮,闪烁,跑马,流水。

  一:u-boot的简单移植

  1.进入开发板提供的源码文件包,解压uboot源码包。

  cd /home/bunfly/source_code/    

  tar xf uboot_tiny4412-20130729.tgz

  2.进入uboot文件夹,更改uboot中tiny4412的配置文件。将225 中的Tiny4412更改为bunfly。

  cd uboot_tiny4412

  vim include/configs/tiny4412.h

  更改255行为#define CONFIG_SYS_PROMPT               "bunfly # "
  3. 回到u-boot文件夹,编译u-boot

  make tiny4412_config

  make

  4.进入sd_fuse文件夹 编译

  cd sd_fuse

  make

  5.编译结束后生成tiny4412文件夹,进入文件夹。插入sd卡到电脑。烧写u-boot到sd卡中

  cd tiny4412/

  sd卡会自动加载,所以先卸载sd卡 umount /media/aaa

  参看sd卡挂载点:fdisk -l 发现sd卡挂载在/dev/sdb中

  烧写: ./sd_fusing.sh /dev/sdb

  6.显示烧写成功后将sd插入开发板,开发板设置从sd卡启动。显示下图表示烧写成功。

  

 

     二:u-boot中编写hello world 程序

  U-Boot作为嵌入式Linux系统的引导,不具有标准C库中的内容。要使用printf函数,就需要u-boot中提供的。u-boot函数内容在u-boot源码文件中

的System.map文件中。System.map文件是被内核所使用的符号表。符号表是一个在符号名称与它们的存储器位置间的查询表格。符号名称可能是变量的名称或是函数名称。当要查询符号名称的位置或是特定位置的符号名称时,就会需要System.map。

   查找System.map中printf中的位置 在538行, c3e114d8 T printf,使用c3e114d8就表示使用printf函数,下面是helloword函数的汇编代码实现: 

 1 .global main
 2 main:
 3     mov ip,sp
 4     stmfd sp!,{fp,ip,lr}
 5     sub fp,ip,#4
 6 
 7     ldr r0, =string    
 8     ldr r2, haha
 9     blx r2
10 
11     sub sp,fp,#8
12     ldmfd sp,{fp,sp,pc}
13 
14 haha:
15     .word 0xc3e114d8
16 string:
17     .asciz "hello world\n"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值