x210v3开发板u-boot-2012.10移植之五---点亮led进行调试

                                             疯雨-版权所有,转载请注明【http://blog.csdn.net/u010346967】

欢迎加入朱老师物联网大课堂qq群  一起学习进步 
群号:397164505 

1.配置led相关寄存器

点led之前必须懂得s5pv210IROM启动流程,不清楚的请看我的另一篇文章 s5pv210 IROM启动流程详解

怎么点灯呢?先得打开x210v3底板原理图x210bv3.pdf,搜索led,看到我们开发板有四个led,分别连接到GPJ0_3 、GPJ0_4 、GPJ0_5和 PWMTOUT1



接下来就是操作GPIO口了,查看datasheet,搜索GPJ0CON,找到如下内容,下图led0瞎写的,别管他实际上GPJ0口控制3个led




要点亮led,分两步:第一,配置GPxxCON寄存器为输出模式;第二,配置GPxxDAT寄存器相应位为低电平(有的是高电平,看原理图)。





根据上面的分析配置GPJ0CON[4]为0001、GPJ0CON[5]为0001、GPJ0CON[6]为0001.也就是设置GPJ0CON为0x111000

下面灭掉2盏led试试,配置GPJ0DAT[3]为1,GPJ0DAT[4]为0,GPJ0DAT[5]为1。也就是设置GPJ0DAT为0x28


2.编写led调试程序

好,现在开始写代码,那么一开始从哪下手呢?熟悉uboot的朋友一定知道是从start.S文件开始分析,那么不熟悉的朋友怎么找一开始下手的文件呢?源头就是u-boot.lds,这个链接脚本规定了文件的排放顺序,还有程序的入口点。不扯太远了,直接看start.S文件。

root@crazyrain:/home/share/uboot/u-boot-2012.10# vim arch/arm/cpu/armv7/start.S

</pre><pre name="code" class="plain">

因为前部分代码都是跟armv7体系结构有关的代码,猜想并不需要修改。直接在文件末尾添加如下led测试代码:

/* --->for FengYu */
        /*led test*/
.globl led_test
led_test:
        ldr r1,=0xe0200240      /*设置GPJ0CON为0x111000 */
        ldr r2,=0x111000
        str r2,[r1]

        ldr r1,=0xe0200244      /*设置GPJ0DAT为0x28 */
        ldr r2,=0x28
        str r2,[r1]

        mov pc, lr

/*  <---for FengYu */

然后在文件的下列位置调用:

/* --->for FengYu */
        bl led_test
/* <---for FengYu */
        /* the mask ROM code should have PLL and others stable */
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
        bl      cpu_init_cp15
        bl      cpu_init_crit
#endif
<pre name="code" class="plain">
</pre><pre name="code" class="plain">

</pre><p>保存退出vim,make一下,得到u-boot.bin文件,我们要的就是它,还一些其他文件u-boot  u-boot.map 暂时不管 </p><h1></h1><h1>3.给程序加校验头</h1><p>接下来就是给u-boot.bin文件加校验头,别人已经编写好了加头程序。可以去网上下载,下面的程序(mkv210_image.c)是我从老朱那里弄过来的共享给大家。</p><pre name="code" class="cpp">


{CSDN:CODE:692081}

接下编译mkv210_image.c得到可执行文件mkv210.然后给文件添加可执行权限

root@crazyrain:/home/share/uboot/u-boot-2012.10# gcc mkv210_image.c -o mkv210

root@crazyrain:/home/share/uboot/u-boot-2012.10# chmod a+x mkv210

root@crazyrain:/home/share/uboot/u-boot-2012.10# ./mkv210 u-boot.bin u-boot_16k.bin

u-boot_16k.bin 就是我们需要的BL1


4.烧写BL1到SD卡

怎么烧?烧到SD卡哪里?首先,烧写可以用linux提供的dd命令。经过前面的分析知道要烧到SD卡的第一个扇区。还一个要注意的就是SD卡要插到卡槽2(这个九鼎官方手册上有说明).好了,插好sd卡,拨码开关打到SD卡启动。

还得先查看SD卡挂载在哪里? 用命令:fdisk -l

root@crazyrain:/home/share/uboot/u-boot-2012.10# fdisk -l     

看到   Disk /dev/sdb: 7948 MB, 7948206080 bytes  可以知道挂载点在/dev/sdb

root@crazyrain:/home/share/uboot/u-boot-2012.10# dd if=u-boot_16k.bin of=/dev/sdb seek=1

弹出下列信息表示烧写成功:

记录了32+0 的读入
记录了32+0 的写出
16384字节(16 kB)已复制,0.0137991 秒,1.2 MB/秒

拔出SD卡,插入开发板SD2卡槽,长按POWER键,可以看到有两盏led是灭的。

呵呵!  说明程序没问题,我们下篇论文再见。。。。。


你可能感兴趣的:(led,uboot,s5pv210)