x-004friendlyarmtiny4412uboot移植之点亮指路灯

LoTGu LoTGu     2022-08-13     689

关键词:

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

开发环境:win7 64 + VMware12 + Ubuntu14.04 64

工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi

要移植的u-boot版本:u-boot-2016-11

Tiny4412开发板硬件版本为

    底板:  Tiny4412/Super4412SDK 1506

       核心板:Tiny4412 - 1412

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 

 

在上一节中我们为tiny4412开发板添加相应目录文件,并且可以顺利编译通过生成.bin文件。接下来我们通过点亮tiny4412核心板上的LED灯开始调试u-boot

1Tiny4412 LED硬件原理图与exynos4412相关引脚寄存器

Tiny4412-1412-Schematic.pdf原理图上可以看到板子上的四个LED硬件连接如下图所示:

clip_image002[1]

clip_image004[1]

LED1~LED4分别跟GPM4_0~GPM4_3相接。

    exynos4412 GPM4相关的寄存器如下:

clip_image006[1]

现在我们只是想简单的点亮exynos4412 GPM4管脚上的LED灯,需要设置GPM4CONGPM4DAT寄存器,这两个寄存器的相关描述如下:

clip_image007[1]

clip_image008[1]

clip_image009[1]

 

 

 

 

2、添加LED灯代码

    arch/arm/cpu/armv7/start.S中添加点亮LED的代码。

diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S

index 691e5d3..4496f2f 100755

--- a/arch/arm/cpu/armv7/start.S

+++ b/arch/arm/cpu/armv7/start.S

@@ -47,6 +47,7 @@ save_boot_params_ret:

        orr     r0, r0, #0xc0           @ disable FIQ and IRQ

        msr     cpsr,r0

 

+       bl light_led

 /*

  * Setup vector:

  * (OMAP4 spl TEXT_BASE is not 32 byte aligned.

@@ -63,6 +64,8 @@ save_boot_params_ret:

        mcr     p15, 0, r0, c12, c0, 0  @Set VBAR

 #endif

 

+

+

        /* the mask ROM code should have PLL and others stable */

 #ifndef CONFIG_SKIP_LOWLEVEL_INIT

        bl      cpu_init_cp15

@@ -272,3 +275,18 @@ ENTRY(cpu_init_crit)

        b       lowlevel_init           @ go setup pll,mux,memory

 ENDPROC(cpu_init_crit)

 #endif

+

+       .globl light_led

+light_led:

+       ldr     r0,=0x110002E0      @ set GPM4CON Register

+       ldr     r1,=0x00001111      @ Configurate GPM4_0<A1>GPM4_1<A2>GPM4_2<A2>GPM4_3 output

+       str     r1,[r0]

+

+       ldr     r0,=0x110002E4       @ set GPM4DAT Register

+@      mov     r1,#0xFE             @ light All led1 on

+@      mov     r1,#0xFD             @ light All led2 on

+@      mov     r1,#0xFB             @ light All led3 on

+@      mov     r1,#0xF7             @ light All led4 on

+       mov r1,#0xF0                     @ light All led on

+       str     r1,[r0]

+       mov pc, lr

 

 

 

3、修改board/samsung/tiny4412/tools/mktiny4412spl.c文件,用于生成BL2

(在《X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件》中已经修改好了mktiny4412spl.c文件,这步可以省略)

diff --git a/board/samsung/tiny4412/tools/mktiny4412spl.c b/board/samsung/tiny4412/tools/mktiny4412spl.c

index 3ed20ef..c3a3e29 100755

--- a/board/samsung/tiny4412/tools/mktiny4412spl.c

+++ b/board/samsung/tiny4412/tools/mktiny4412spl.c

@@ -1,5 +1,6 @@

 /*

- * Copyright (C) 2011 Samsung Electronics

+ *       2016

+ *  Author  AP0904225 <ap0904225@qq.com>

  *

  * SPDX-License-Identifier:    GPL-2.0+

  */

@@ -13,11 +14,9 @@

 #include <sys/stat.h>

 

 #define BUFSIZE                        (16*1024)

-#define IMG_SIZE               (16*1024)

-#define SPL_HEADER_SIZE                16

+#define IMG_SIZE               ( (14*1024)- 4 )

 #define FILE_PERM              (S_IRUSR | S_IWUSR | S_IRGRP \

                                | S_IWGRP | S_IROTH | S_IWOTH)

-#define SPL_HEADER             "S5PC210 HEADER  "

 /*

 * Requirement:

 * IROM code reads first 14K bytes from boot device.

@@ -37,7 +36,8 @@ int main(int argc, char **argv)

        int i, len;

        unsigned char buffer[BUFSIZE] = {0};

        int ifd, ofd;

-       unsigned int checksum = 0, count;

+       unsigned int checksum = 0;

+       unsigned int count = 0;

 

        if (argc != 3) {

                printf(" %d Wrong number of arguments\n", argc);

@@ -52,7 +52,7 @@ int main(int argc, char **argv)

        }

 

        ofd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, FILE_PERM);

-       if (ifd < 0) {

+       if (ofd < 0) {

                fprintf(stderr, "%s: Can't open %s: %s\n",

                        x-007friendlyarmtiny4412u-boot移植之内存初始化

 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<&l 查看详情

x-006friendlyarmtiny4412u-boot移植之debug串口用起来

 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<&l 查看详情

x-003friendlyarmtiny4412uboot移植之添加相应目录文件

  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 查看详情

x-005friendlyarmtiny4412uboot移植之时钟初始化

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 查看详情

x-009friendlyarmtiny4412uboot移植之sdcard用起来kernelboot起来

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 查看详情

x-002exyson4412芯片启动过程分析

 移植u-boot到FriendlyARMTiny4412开发板上,首先我们需要对SamsungExyson4412芯片的启动方式、系统时钟初始化、串口初始化、内存初始化以及开发板的内存地址空间分配有一个清楚的认识。下面是一些参考资料:1>、技术部落(这... 查看详情

itop-4412开发板运行linuxqt系统,怎么挂接u盘

参考技术A如果是iTop-4412的android4.0系统,可以这样来实现:linuxQT系统下挂载u盘,首先用命令mknod/dev/sda1b81创建U盘的设备节点,然后使用命令mount/dev/sda1/mnt/udisk/挂载u盘即可。 查看详情

tiny4412u-boot分析u-boot配置流程分析

参考Friendlyarm的文档,编译uboot的流程为maketiny4412_configmake这个过程主要涉及到两个文件,顶层的Makefile文件和mkconfig文件,makeconfig文件是一个脚本,通过文件的注释可以了解到它的作用#Scripttocreateheaderfilesandlinkstoconfigure#U-Bootforasp... 查看详情

u-boot启动流程详解-基于itop4412开发板

...(NAND,NORFLASH,SD,MMC等)拷贝到DDR中,最后启动linux内核。4412u-boot启动流程:A.开机运行iRom中代码B.BL1阶段(E4412_N.bl1.xxxxG. 查看详情

tiny4412-1312__uboot移植(代码片段)

...16.08-x86_64_arm-linux-gnueabi要移植的u-boot版本:u-boot-2016-11Tiny4412开发板硬件版本为:  底板:  Tiny4412SDK1312B  核心板:Tiny4412-1306 1.获取U-BOOT源码从FTP站点下载: ftp://ftp.denx.de/pub/u-bootuboot-2016-09.tar.bz22.交... 查看详情

tiny4412u-boot分析u-boot引导内核流程

在u-boot中,通过bootm命令启动内核。bootm命令的作用是将内核加载到指定的内存地址,然后通过R0、R1、R2寄存器传递启动参数之后启动内核。在启动内核之前需要对环境做一些初始化工作,主要有如下几个方面:(1)、cpu寄存器设... 查看详情

tiny4412u-boot分析u-boot启动流程

从大方面来说,u-boot的启动分成两个阶段,第一个阶段主要的职责是准备初始化的环境,主要有以下几点①设置异常向量表②把CPU的工作模式设置为SVC32模式③关闭中断、MMU和cache④关闭看门狗⑤初始化内存、时钟、串口⑥设置... 查看详情

第二章tiny4412u-boot移植二启动分析

本文转载自:http://blog.csdn.net/eshing/article/details/37521481版权声明:本文为博主原创文章,未经博主允许不得转载。一、启动过程说明      讲解启动过程,首先的源头就是打开电源,这个相信没人人不知道。CPU... 查看详情

tiny4412学习杂记

1.Android挂载NFS使用busyboxmount来替代mount命令2.修改Uboot中fastboot最大buff 使用U-boot烧写Android5.0的时候出现remote:datatoolarge将 include/configs/tiny4412.h 改大一点3.tiny4412内核中trustzone配置开关tiny4412 trust 查看详情

tiny4412u-boot烧写及根文件系统制作(不进入终端问题)

...tails?id=51400196(转) VMware12环境:ubuntu12.4开发板:tiny4412首先烧写bootloader,我用一个8G的内存卡,现在不说sd卡的制作过程了,网上可以参考。现在就把我给arm的emmc烧写过程开始说。用sd卡启动,开发板的右下角有个开关控制... 查看详情

uboot移植前奏

  Tiny4412开发板硬件版本为:     底板: Tiny4412/Super4412SDK1506      核心板:Tiny4412-1412 1、下载u-boot源代码,建立u-boot代码仓库   参考:h 查看详情

tiny4412--uboot移植串口(代码片段)

...16.08-x86_64_arm-linux-gnueabi要移植的u-boot版本:u-boot-2016-11Tiny4412开发板硬件版本为:  底板:  Tiny4412SDK1312B  核心板:Tiny4412-1306 1,原理图查看tiny4412SDK-1312B-Schematic.pdf   可看出,底板使用UART0作... 查看详情

tiny4412裸机程序说明

...自己想学点东西,过于求成,又过于自信,直接买了Tiny4412的板子,但网上关于4412的资料太少,我一直没办法啃动,只能尽可能找来各种相关资料进行参考分析。我想在U-Boot程序中加入LCD显示功能,但始终都没有正常点亮LCD,放... 查看详情