精华内容
下载资源
问答
  • tiny4412上移植linux4.4支持设备树的最终文件,包含uImage、uboot、文件系统,可下载运行。配套博客:http://blog.csdn.net/fengyuwuzu0519/article/details/74101380
  • 适用开发板型号:Tiny4412/Super4412SDK 1506 ,注意,是1506!1506!1506! 内部已经生成了uboot.bin文件,可直接使用!
  • 很完整的教材,有流程
  • Tiny4412开发板电容触摸屏一线触摸tslib补丁,解压后进入目录 编译,make,将生成的.so文件移至开发板的lib目录即可
  • Tiny4412开发板手册

    2016-06-23 11:38:57
    Tiny4412开发板手册
  • uboot_tiny4412-master.tar.gz

    2020-06-04 17:29:45
    uboot_tiny4412-master.tar.gz 已经移植好的uboot,适用于Tiny4412开发板。
  • tiny4412上实现QT控制LED

    2015-10-19 14:56:22
    QT上button对LED简单控制,友善之臂的LED驱动
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15diff --git a/include/configs/tiny4412.h b/include/configs/tiny4412.h old mode 100644 new mode 100755 index 2e83d54..413da6e --- a/include/configs/tiny4412.h +++ b/...

    一. 前言

    一直以来都是基于 Linux-2.6 内核学习嵌入式,但是工作之后发现,主流的 kernel 早已经不再使用 platform device 结构去描述设备信息了,而是换成了更为简洁的 device tree 方式。

    这里贴出 wowotech 的 device tree 的引言:

    作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备学习的时候,突然发现linux kernel对于我似乎变得非常的陌生了,各种新的机制,各种framework、各种新的概念让我感到阅读内核代码变得举步维艰。 还好,剖析内核的热情还在,剩下的就交给时间的。首先进入视线的是Device Tree机制,这是和porting内核非常相关的机制,如果想让将我们的硬件平台迁移到高版本的内核上,Device Tree是一个必须要扫清的障碍。

    二. 移植 U-Boot

    本小节主要是修改 U-Boot 源码,让其支持 dts 方式启动内核。

    2.1 获取 U-Boot 源码

    u-boot 使用的是友善之臂提供的 u-boot 源码,可以在友善之臂光盘获取。

    U-Boot 源码光盘路径:Disk-Aubootuboot_tiny4412-20130729.tgz

    我同时上传了一份到我的 github 上,可以通过 git clone 获取到。1

    2

    3

    4

    5

    6

    7

    8

    9

    10[email protected]:~/workspace/tiny4412$ git clone [email protected]:tiny4412/source.code.git

    [email protected]:~/workspace/tiny4412$ cd source.code/uboot/friendlyarm/

    [email protected]:~/workspace/tiny4412/source.code/uboot/friendlyarm$ ls

    uboot_tiny4412-20130729.tgz

    ## 解压 u-boot

    [email protected]:~/workspace/tiny4412/source.code/uboot/friendlyarm$ tar -zxvf uboot_tiny4412-20130729.tgz -C ~/workspace/tiny4412/

    2.2 修改源码以支持 dts 方式启动

    前面已经提到,友善之臂光盘中提供的 u-boot 不支持引导 uImage 格式的 kernel,也不支持 device tree。针对这两个问题,对 u-boot 要做以下修改:

    开启了 MMU 的话,u-boot 访问的都是虚拟地址,因为后期要使用 dnw 工具烧写文档到开发板 RAM 中,需要指定烧写到 RAM 中的具体物理地址,因此需要关闭 MMU。1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15diff --git a/include/configs/tiny4412.h b/include/configs/tiny4412.h

    old mode 100644

    new mode 100755

    index 2e83d54..413da6e

    --- a/include/configs/tiny4412.h

    +++ b/include/configs/tiny4412.h

    @@ -308,7 +308,9 @@

    #define CONFIG_SYS_MONITOR_LEN (256 << 10) /* 256 KiB */

    #define CONFIG_IDENT_STRING " for TINY4412"

    -#define CONFIG_ENABLE_MMU

    +#undef CONFIG_ENABLE_MMU

    #ifdef CONFIG_ENABLE_MMU

    #define CONFIG_SYS_MAPPED_RAM_BASE 0xc0000000

    关闭 MMU 后,还需要修改 u-boot 的链接地址到真实物理地址范围内。1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12diff --git a/board/samsung/tiny4412/config.mk b/board/samsung/tiny4412/config.mk

    old mode 100644

    new mode 100755

    index dd7ec07..cc3488e

    --- a/board/samsung/tiny4412/config.mk

    +++ b/board/samsung/tiny4412/config.mk

    @@ -9,5 +9,7 @@

    # published by the Free Software Foundation.

    #

    #

    -CONFIG_SYS_TEXT_BASE = 0xc3e00000

    +CONFIG_SYS_TEXT_BASE = 0x43e00000

    开启设备树相关功能宏控,使其支持设备树。1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14diff --git a/include/configs/tiny4412.h b/include/configs/tiny4412.h

    index 413da6e..b52dfa0 100755

    --- a/include/configs/tiny4412.h

    +++ b/include/configs/tiny4412.h

    @@ -28,6 +28,11 @@

    #define __CONFIG_H

    +#define CONFIG_OF_LIBFDT

    +#define CONFIG_SYS_BOOTMAPSZ (20 << 20)

    /*

    * High Level Configuration Options

    * (easy to change)

    原生的 u-boot 使用 bootm 命令只可以引导 zImage 类型的 kernel,不支持 uImage,通过修改 bootm 命令可以使其支持 uImage。1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c

    old mode 100644

    new mode 100755

    index 04622dd..2cf6ea9

    --- a/common/cmd_bootm.c

    +++ b/common/cmd_bootm.c

    @@ -591,6 +591,10 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])

    int ret;

    boot_os_fn *boot_fn;

    + int iszImage = 0;

    +

    #ifdef CONFIG_SECURE_BOOT

    #ifndef CONFIG_SECURE_BL1_ONLY

    security_check();

    @@ -627,6 +631,10 @@ int (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])

    images.legacy_hdr_valid = 1;

    + iszImage = 1;

    +

    goto after_header_check;

    }

    #endif

    @@ -723,8 +731,14 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])

    #if defined(CONFIG_ZIMAGE_BOOT)

    after_header_check:

    - images.os.os = hdr->ih_os;

    - images.ep = image_get_ep (&images.legacy_hdr_os_copy);

    +

    + if (iszImage) {

    + images.os.os = hdr->ih_os;

    + images.ep = image_get_ep (&images.legacy_hdr_os_copy);

    + }

    +

    #endif

    #ifdef CONFIG_SILENT_CONSOLE

    2.3 安装交叉编译器

    对于 kernel 和 u-boot 编译,最好使用同一个编译器,不妨在这 u-boot 编译之初,先配置一个同时支持 u-boot 以及 linux-4.4 版本的交叉编译器。

    我个人使用的是 arm-none-eabi-gcc 编译器,可以访问 GNU Arm Embedded Toolchain 获取,也可以通过我的 git 仓库获取。1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24## 克隆 git 仓库获取交叉编译器

    [email protected]:~/workspace/tiny4412$ git clone [email protected]:tiny4412/tool.chain.git

    ## 找到交叉编译器

    [email protected]:~/workspace/tiny4412$ cd tool.chain/compiler/

    [email protected]:~/workspace/tiny4412/tool.chain/compiler$ ls

    gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2

    ## 解压到 /opt 目录

    [email protected]:~$ sudo tar -jxvf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2 -C /opt/

    ## 将交叉编译器路径添加到 PATH 环境变量中,并追加到配置文档中

    [email protected]:~$ export PATH=/opt/gcc-arm-none-eabi-5_4-2016q3/bin:$PATH >> .bashrc

    ## 执行配置文档,使环境变量生效

    ## 查看交叉编译器版本号,确认交叉编译配置 ok

    [email protected]:~$ arm-none-linux-gnueabi-gcc -v

    Using built-in specs.

    Target: arm-none-linux-gnueabi

    Configured with: /opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure --build=i386-build_redhat-linux-gnu --host=i386-build_redhat-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.4.3 --with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --enable-languages=c,c++ --disable-multilib --with-arch=armv4t --with-cpu=arm920t --with-tune=arm920t --with-float=soft --with-pkgversion=ctng-1.6.1 --disable-sjlj-exceptions --enable-__cxa_atexit --with-gmp=/opt/FriendlyARM/toolschain/4.4.3 --with-mpfr=/opt/FriendlyARM/toolschain/4.4.3 --with-ppl=/opt/FriendlyARM/toolschain/4.4.3 --with-cloog=/opt/FriendlyARM/toolschain/4.4.3 --with-mpc=/opt/FriendlyARM/toolschain/4.4.3 --with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99 --enable-long-long --enable-target-optspace

    Thread model: posix

    gcc version 4.4.3 (ctng-1.6.1)

    2.4 配置编译 U-Boot

    修改 U-Boot 编译器为交叉编译器。1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15diff --git a/Makefile b/Makefile

    old mode 100644

    new mode 100755

    index 48e8eaa..04e0132

    --- a/Makefile

    +++ b/Makefile

    @@ -157,7 +157,7 @@ export ARCH CPU BOARD VENDOR SOC

    # set default to nothing for native builds

    ifeq ($(HOSTARCH),$(ARCH))

    -CROSS_COMPILE ?=

    +CROSS_COMPILE ?= arm-none-eabi-

    endif

    # load other configuration

    配置编译 U-Boot。1

    2

    3

    4

    5[email protected]:~/workspace/tiny4412/uboot.support.dts$ make distclean

    [email protected]:~/workspace/tiny4412/uboot.support.dts$ make clean

    [email protected]:~/workspace/tiny4412/uboot.support.dts$ make tiny4412_config

    Configuring for tiny4412 board...

    [email protected]:~/workspace/tiny4412/uboot.support.dts$ make -j24

    2.5 烧写 U-Boot 到 SD 卡

    在烧写的时候经常遇到这两个错误:

    在 uboot 根目录下执行 sd_fusing.sh 脚本,报错如下:1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11## 在 uboot 根目录下执行 sd_fusing.sh 脚本

    [email protected]:~/workspace/tiny4412/uboot.support.dts$ sudo ./sd_fuse/tiny4412/sd_fusing.sh /dev/sdb

    /dev/sdb reader is identified.

    Error: u-boot.bin NOT found, please build it & try again.

    ./sd_fuse/tiny4412/sd_fusing.sh: 49: exit: Illegal number: -1

    ## 找不到 mkbl2 镜像

    [email protected]:~/workspace/tiny4412/uboot.support.dts/sd_fuse/tiny4412$ sudo ./sd_fusing.sh /dev/sdb

    /dev/sdb reader is identified.

    Error: can not find host tool - mkbl2, stop.

    ./sd_fusing.sh: 54: exit: Illegal number: -1

    在 uboot 根目录下执行 sd_fusing.sh 脚本报错是因为脚本中使用的相对路径访问的 uboot 镜像,只有在 src/sd_fuse/tiny4412/ 目录下执行,路径才对的上。

    另外找到 mkbl2 是因为执行 uboot 需要依赖 mkbl2。这个文档是三星官方给的,可以在 src/sd_fuse/ 目录下执行 make 生成。1

    2

    3

    4[email protected]:~/workspace/tiny4412/uboot.support.dts/sd_fuse/tiny4412$ cd ../

    [email protected]:~/workspace/tiny4412/uboot.support.dts/sd_fuse$ make

    gcc -omkbl2 V310-EVT1-mkbl2.c

    gcc -osd_fdisk sd_fdisk.c

    正确的烧写流程:1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30[email protected]:~/workspace/tiny4412/uboot.support.dts$ cd sd_fuse/

    [email protected]:~/workspace/tiny4412/uboot.support.dts/sd_fuse$ make

    gcc -omkbl2 V310-EVT1-mkbl2.c

    gcc -osd_fdisk sd_fdisk.c

    [email protected]:~/workspace/tiny4412/uboot.support.dts/sd_fuse$ cd tiny4412/

    [email protected]:~/workspace/tiny4412/uboot.support.dts/sd_fuse/tiny4412$ sudo ./sd_fusing.sh /dev/sdb

    /dev/sdb reader is identified.

    ---------------------------------------

    BL1 fusing

    记录了16+0 的读入

    记录了16+0 的写出

    8192 bytes (8.2 kB, 8.0 KiB) copied, 0.096504 s, 84.9 kB/s

    ---------------------------------------

    BL2 fusing

    记录了28+0 的读入

    记录了28+0 的写出

    14336 bytes (14 kB, 14 KiB) copied, 0.2371 s, 60.5 kB/s

    ---------------------------------------

    u-boot fusing

    记录了569+1 的读入

    记录了569+1 的写出

    291484 bytes (291 kB, 285 KiB) copied, 2.68892 s, 108 kB/s

    ---------------------------------------

    TrustZone S/W fusing

    记录了184+0 的读入

    记录了184+0 的写出

    94208 bytes (94 kB, 92 KiB) copied, 0.923827 s, 102 kB/s

    ---------------------------------------

    U-boot image is fused successfully.

    Eject SD card and insert it again.

    将 u-boot 下载 SD 卡后,将 SD 卡插入 Tiny4412 中,使用 SD 启动方式,可以进入 u-boot 命令行。1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34U-Boot 2010.12-00000-gef514bc-dirty (Mar 28 2018 - 21:58:58) for TINY4412

    CPU:S5PC220 [Samsung SOC on SMP Platform Base on ARM CortexA9]

    APLL = 1400MHz, MPLL = 800MHz

    Board:TINY4412

    DRAM:1023 MiB

    vdd_arm: 1.2

    vdd_int: 1.0

    vdd_mif: 1.1

    BL1 version: N/A (TrustZone Enabled BSP)

    Checking Boot Mode ... SDMMC

    REVISION: 1.1

    MMC Device 0: 7460 MB

    MMC Device 1: 3728 MB

    MMC Device 2: N/A

    *** Warning - using default environment

    Net:No ethernet found.

    Hit any key to stop autoboot: 0

    reading kernel..device 0 Start 1057, Count 12288

    MMC read: dev # 0, block # 1057, count 12288 ... 12288 blocks read: OK

    completed

    reading RFS..device 0 Count 13345, Start 2048

    MMC read: dev # 0, block # 13345, count 2048 ... 2048 blocks read: OK

    completed

    Wrong Image Format for bootm command

    ERROR: can't get kernel image!

    TINY4412 #

    在 u-boot 中执行以下命令,可以将 u-boot 从 sd 中拷贝到 emmc 中,以后便可以通过 emmc 启动了。

    但是很遗憾,我试验下来并不行,原因暂时没有找到。1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19## 将 u-boot 从 SD 卡复制到 DDR 中

    TINY4412 # mmc read 0 0x40000000 1 390

    MMC read: dev # 0, block # 1, count 912 ... 912 blocks read: OK

    ## 打开 EMMC

    TINY4412 # emmc open 1

    eMMC OPEN Success.!!

    !!!Notice!!!

    !You must close eMMC boot Partition after all image writing!

    !eMMC boot partition has continuity at image writing time.!

    !So, Do not close boot partition, Before, all images is written.!

    ## 将 DDR 地址中的 u-boot 写到 EMMC

    TINY4412 # mmc write 1 0x40000000 0 390

    MMC write: dev # 1, block # 0, count 912 ... 912 blocks written: OK

    ## 关闭 EMMC

    TINY4412 # emmc close 1

    eMMC CLOSE Success.!!

    三. 移植 Kernel

    主要是配置好 dts 移植好 usb 网卡驱动,这些操作我都已经做好了,可以直接访问 github 获取。

    具体的修改内容可以查看 github 仓库的提交记录。1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15[email protected]:~/workspace/tiny4412$ git clone [email protected]:tiny4412/linux-4.4.x.git

    [email protected]:~/workspace/tiny4412$ cd linux-4.4.x/

    ## 清除内核配置

    [email protected]:~/workspace/tiny4412/linux-4.4.x$ make distclean

    [email protected]:~/workspace/tiny4412/linux-4.4.x$ make clean

    ## 配置内核

    [email protected]:~/workspace/tiny4412/linux-4.4.x$ make exynos_defconfig

    ## 使配置生效,生成 .config 文档

    [email protected]:~/workspace/tiny4412/linux-4.4.x$ make menuconfig

    ## 开始编译

    [email protected]:~/workspace/tiny4412/linux-4.4.x$ make -j24 uImage LOADADDR=0x40008000

    ## 将内核 uImage 拷贝到根目录下,方便后面使用 dts 下载。

    [email protected]:~/workspace/tiny4412/linux-4.4.x$ ./maziot.sh

    'arch/arm/boot/dts/exynos4412-tiny4412.dtb' -> './exynos4412-tiny4412.dtb'

    'arch/arm/boot/uImage' -> './uImage'

    四. 构建根文档系统

    已经做好,可以直接访 github 获取。1[email protected]:~/workspace/tiny4412$ git clone [email protected]:tiny4412/rootfs.git

    如何使用呢?开发板在 u-boot 中设置 bootargs 启动参数1

    2

    3# nfs 启动方式的 root 属性格式为 nfsroot=: ip=:::::eth0:off

    setenv bootargs 'root=/dev/nfs rw nfsroot=192.168.1.7:/home/user/workspace/tiny4412/rootfs ethmac=1C:6F:65:34:51:7E ip=192.168.1.100:192.168.1.7:192.168.1.1:255.255.255.0::eth0:off console=ttySAC0,115200 init=/linuxrc'

    save

    展开全文
  • Tiny4412Tiny4412编译和烧写uboot

    千次阅读 2020-06-04 17:43:18
    编译Uboot 3.1 解压uboot [root@itcast tools]# tar -xjvf uboot_tiny4412-master.tar.bz2 3.2 配置uboot [root@itcast tools]# cd uboot_tiny4412-master [root@itcast uboot_tiny4412-master]# make tiny4412_...

    00. 目录

    01. Uboot简介

    1.1 Uboot概述

    U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形成的,尤其是一些设备的驱动程序

    1.2 uboot目录结构

    • api 是uboot提供接口的函数
    • arch 是体系架构相关的代码
    • board 目标板相关文件,主要包含SDRAM、FLASH驱动;
    • common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测;
    • disk 磁盘分区相关代码
    • doc 文档
    • cpu 与处理器相关的文件。如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;
    • driver 通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好)
    • doc U-Boot的说明文档;
    • examples可在U-Boot下运行的示例程序;如hello_world.c,timer.c;
    • fs 文件系统目录 支持嵌入式常见的文件系统
    • include U-Boot头文件;尤其configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件;
    • lib_xxx 处理器体系相关的文件,如lib_ppc, lib_arm目录分别包含与PowerPC、ARM体系结构相关的文件;
    • nand_spl nand存储器相关代码
    • net 与网络功能相关的文件目录,如bootp,nfs,tftp;
    • post 上电自检文件目录。尚有待于进一步完善;
    • rtc RTC驱动程序;
    • tools 用于创建U-Boot S-RECORD和BIN镜像文件的工具;

    1.3 工作模式

    U-Boot的工作模式有启动加载模式下载模式

    启动加载模式是Bootloader的正常工作模式,嵌入式产品发布时,Bootloader必须工作在这种模式下,Bootloader将嵌入式操作系统从FLASH中加载到SDRAM中运行,整个过程是自动的。

    下载模式就是Bootloader通过某些通信手段将内核映像或根文件系统映像等从PC机中下载到目标板的FLASH中。用户可以利用Bootloader提供的一些命令接口来完成自己想要的操作。

    1.4 Uboot启动流程

    大多数BootLoader都分为stage1和stage2两大部分,U-boot也不例外。依赖于cpu体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。
    1、 stage1(start.s代码结构)
    U-boot的stage1代码通常放在start.s文件中,它用汇编语言写成,其主要代码部分如下:
    (1) 定义入口。由于一个可执行的image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在rom(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。
    (2)设置异常向量(exception vector)。
    (3)设置CPU的速度、时钟频率及中断控制寄存器。
    (4)初始化内存控制器 。
    (5)将rom中的程序复制到ram中。
    (6)初始化堆栈 。
    (7)转到ram中执行,该工作可使用指令ldrpc来完成。

    2、 stage2(C语言代码部分)
    lib_arm/board.c中的start armboot是C语言开始的函数,也是整个启动代码中C语言的主函数,同时还是整个u-boot(armboot)的主函数,该函数主要完成如下操作:
    (1)调用一系列的初始化函数。
    (2)初始化flash设备。
    (3)初始化系统内存分配函数。
    (4)如果目标系统拥有nand设备,则初始化nand设备。
    (5)如果目标系统有显示设备,则初始化该类设备。
    (6)初始化相关网络设备,填写ip,c地址等。
    (7)进入命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

    1.5 常用的bootloader

    U-Boot
    U-Boot(Universal BootLoader)是遵循GPL条款的开放源码项目,是在PPCBoot以及ARMBoot的基础上逐步发展和演化而来,现在U-Boot已经能够支持PowerPC、ARM、X86、MIPS等体系结构的上百种开发板,已经成为功能最多、灵活性最强,并且开发最积极的开放源码的BootLoader。

    vivi
    vivi是由韩国Mizi公司开发的一种BootLoader,专门针对ARM9处理器而设计,支持S3C2410x处理器。和所有的BootLoader一样,vivi有两种工作模式,即启动加载模式和下载模式。当vivi处于下载模式时,它为用户提供一个命令行接口,通过该接口可以使用vivi提供的一些命令。

    Blob
    Blob(BootLoader Object)是由Jan-Derk Bakker和Erik Mouw发布,专为StrongARM构架下的LART设计的BootLoader。
    Blob支持SA1100的LART主板,但用户也可以自行修改移植。Blob也提供两种工作模式,在启动时处于正常的启动加载模式,但是它会延时10秒等待终端用户按下任意键而将Blob 切换到下载模式。如果在10秒内没有用户按键,则Blob继续启动Linux内核。

    ARMboot
    ARMboot是一个ARM平台的开源固件项目,它严重依赖于PPCBoot。ARMboot支持的处理器构架有StrongARM,ARM720T,PXA250等,是为基于ARM或者StrongARM CPU的嵌入式系统所设计的。ARMboot的目标是成为通用的、容易使用和移植的引导程序,非常轻便地运用于新的平台上。总得来说,ARMboot介于大、小型BootLoader之间,相对轻便,基本功能完备,缺点是缺乏后续支持。ARMboot发布的最后版本为ARMboot–1.1.0,2002年终止了ARMboot的维护,其发布网址为:http://sourceforge.net/projects/armboot。

    Redboot
    RedBoot是标准的嵌入式调试和引导解决方案,是一个专门为嵌入式系统定制的引导工具,最初由Redhat开发,是嵌入式操作系统eCos的一个最小版本,是随eCos发布的一个BOOT方案,是一个开源项目。现在交由自由软件组织FSF管理,遵循GPL。集BootLoader、调试、Flash烧写于一体。支持串口、网络下载、执行嵌入式应用程序。既可以用在产品的开发阶段(调试功能),也可以用在最终的产品上(Flash更新、网络启动)。

    RedBoot支持的处理器构架有ARM、MIPS、PowerPC、x86等,是一个完善的嵌入式系统BootLoader。

    02. 安装交叉编译器

    交叉编译器:在宿主机上编译出能够在目标机上运行的代码的工具。咱们的压缩包为arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz。

    2.1 解压交叉编译器工具

    [root@itcast tools]# tar -xzvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz 
    
    

    2.2 创建arm目录

    [root@itcast tools]# mkdir /usr/local/arm
    [root@itcast tools]# 
    
    

    2.3 拷贝对应的文件到arm目录

    [root@itcast tools]# cp opt/FriendlyARM/toolschain/4.5.1/ /usr/local/arm/ -rf
    [root@itcast tools]# 
    

    2.4 设置环境变量

    [root@itcast /]# vim ~/.bash_profile 
    
    PATH=$PATH:$HOME/bin
    # 新增加的内容如下
    PATH=/usr/local/arm/4.5.1/bin:$PATH
    

    2.5 注销系统

    Ctrl + Alt + BackSpace 重新登录

    2.6 测试交叉编译器

    #输入arm-linux- 按两下tab键 如果出现如下内容表示环境已经设置好
    [root@itcast tools]# arm-linux-
    arm-linux-addr2line  arm-linux-cpp        arm-linux-gprof      arm-linux-populate
    arm-linux-ar         arm-linux-g++        arm-linux-ld         arm-linux-ranlib
    arm-linux-as         arm-linux-gcc        arm-linux-ldd        arm-linux-readelf
    arm-linux-c++        arm-linux-gcc-4.5.1  arm-linux-nm         arm-linux-size
    arm-linux-cc         arm-linux-gccbug     arm-linux-objcopy    arm-linux-strings
    arm-linux-c++filt    arm-linux-gcov       arm-linux-objdump    arm-linux-strip
    
    

    03. 编译Uboot

    3.1 解压uboot

    [root@itcast tools]# tar -xjvf uboot_tiny4412-master.tar.bz2 
    
    

    3.2 配置uboot

    [root@itcast tools]# cd uboot_tiny4412-master
    [root@itcast uboot_tiny4412-master]# make tiny4412_config 
    awk '(NF && $1 !~ /^#/) { print $1 ": " $1 "_config; $(MAKE)" }' boards.cfg > .boards.depend
    Configuring for tiny4412 board...
    [root@itcast uboot_tiny4412-master]# 
    
    

    3.3 编译uboot

    [root@itcast uboot_tiny4412-master]# make -j4
    ....
    arm-linux-ld: warning: creating a DT_TEXTREL in object.
    arm-linux-objcopy -O srec u-boot u-boot.srec
    arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin
    
    

    3.4 生成对应工具

    [root@itcast sd_fuse]# ls
    Makefile  sd_fdisk.c  tiny4412  V310-EVT1-mkbl2.c
    [root@itcast sd_fuse]# make 
    gcc -o	mkbl2 V310-EVT1-mkbl2.c 
    gcc -o	sd_fdisk sd_fdisk.c
    [root@itcast sd_fuse]# 
    
    

    04. 烧写Uboot

    4.1 解挂SD卡

    [root@itcast /]# umount /media/*
    [root@itcast /]# 
    

    4.2 格式化SD卡

    [root@itcast /]# dd if=/dev/zero of=/dev/sdb bs=1024 count=1024
    记录了1024+0 的读入
    记录了1024+0 的写出
    1048576字节(1.0 MB)已复制,1.79304 秒,585 kB/秒
    [root@itcast /]# 
    
    

    4.3 烧写Uboot到SD卡

    [root@itcast tiny4412]# pwd
    /home/tools/uboot_tiny4412-master/sd_fuse/tiny4412
    [root@itcast tiny4412]# ./sd_fusing.sh  /dev/sdb
    /dev/sdb reader is identified.
    ---------------------------------------
    BL1 fusing
    记录了16+0 的读入
    记录了16+0 的写出
    8192字节(8.2 kB)已复制,0.0816119 秒,100 kB/秒
    ---------------------------------------
    BL2 fusing
    记录了28+0 的读入
    记录了28+0 的写出
    14336字节(14 kB)已复制,0.255752 秒,56.1 kB/秒
    ---------------------------------------
    u-boot fusing
    记录了540+1 的读入
    记录了540+1 的写出
    276932字节(277 kB)已复制,4.6861 秒,59.1 kB/秒
    ---------------------------------------
    TrustZone S/W fusing
    记录了184+0 的读入
    记录了184+0 的写出
    94208字节(94 kB)已复制,2.49234 秒,37.8 kB/秒
    ---------------------------------------
    U-boot image is fused successfully.
    Eject SD card and insert it again.
    [root@itcast tiny4412]# 
    
    

    到此,uboot已经烧写到SD中。

    05. 测试Uboot

    在Linux平台我们使用minicom作为串口调试工具。

    5.1 安装minicom(如果没有安装minicom的话)

    [root@itcast sd_fuse]# yum install minicom.x86_64 
    
    

    5.2 设置minicom

    [root@itcast sd_fuse]# minicom -s
    # 选择第三个选项 按下回车
    

    在这里插入图片描述

    按下回车

    在这里插入图片描述

    备注:

    115200 波特率
    8N1: 8数据位 N 奇校验 1停止位

    保存为默认配置,下次启动就不需要配置。

    在这里插入图片描述

    5.3 启动minicom

    此时板子上电,从SD卡启动,输出如下信息

    [root@itcast /]# minicom 
    U-Boot 2010.12 (Jun 04 2020 - 17:01:06) for TINY4412     
    
    
    CPU:    S5PC220 [Samsung SOC on SMP Platform Base on ARM CortexA9]
            APLL = 1400MHz, MPLL = 800MHz
    
    Board:  TINY4412
    DRAM:   1023 MiB
    
    vdd_arm: 1.2
    vdd_int: 1.0
    vdd_mif: 1.1
    
    BL1 version:  N/A (TrustZone Enabled BSP)
    
    
    Checking Boot Mode ... SDMMC
    REVISION: 1.1
    MMC Device 0: 7580 MB
    MMC Device 1: 3728 MB
    MMC Device 2: N/A
    *** Warning - using default environment
    
    Net:    No ethernet found.
    Hit any key to stop autoboot:  0 
    TINY4412 # 
    

    此时uboot已经启动了。

    06. 常见问题解决

    6.1 问题一 没有那个文件或目录

    [root@itcast uboot_tiny4412-master]# arm-linux-gcc -v
    bash: /usr/local/arm/4.5.1/bin/arm-linux-gcc: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
    [root@itcast uboot_tiny4412-master]# 
    
    

    解决办法:

    [root@itcast uboot_tiny4412-master]# yum install glibc.i686
    [root@itcast uboot_tiny4412-master]# arm-linux-gcc -v
    Using built-in specs.
    COLLECT_GCC=arm-linux-gcc
    
    

    6.2 问题二:找不到libz.so动态库

    编译过程中

    在这里插入图片描述

    解决办法

    [root@itcast uboot_tiny4412-master]# yum install zlib*.i686
    
    

    07. 附录

    7.1 arm-linux-gcc下载:arm-linux-gcc-4.5.1-v6-vfp-20120301.tar.gz

    7.2 uboot下载:uboot_tiny4412-master.tar.gz

    展开全文
  • 友善之臂tiny4412通过USB摄像头V4L2采集YUYV422格式图像数据,通过FIMC转码成YUV420。目的是对采集到的视频进行压缩,由于压缩的输入格式只能为NV12(YUV420)。所以进行硬件转码。同时也可以转为其他格式。
  • 1.5 步骤五:建立TINY4412调试环境 - 13 - 1.5.1 安装USB ADB驱动程序 - 13 - 1.5.2 在Tiny4412上测试ADB功能 - 14 - 1.5.3 通过USB ADB在Tiny4412上运行程序 - 16 - 1.5.4 在Tiny4412上调试Android程序 - 18 - 第二...
  • 通过JNI和硬件访问服务两种方法实现android串口操作。
  • TINY4412数据手册

    2013-12-02 20:03:02
    tiny 4412数据手册 数据手册 处理器4412
  • 使用该工具可以直接通过USB向开发板烧录程序,避免了SD卡烧录的繁琐过程,相关教程详见 http://blog.csdn.net/jzxcumt/article/details/50281325 。同时还可以通过该工具向4412的eMMC烧录Uboot,方便实用。
  • Tiny4412 Android硬件开发指南
  • tiny4412的uboot

    2015-12-17 22:03:53
    tiny4412的uboot,感兴趣同学可以下载来看看
  • 这是一个基于tiny4412板的android led hal示例。 用户可以通过按钮打开/关闭 LED。 整个项目包括3个目录:android_code、led_driver、sequenceDiagram。 android_code:android 代码,包括应用程序、java 系统服务、...
  • Tiny4412Tiny4412开发板介绍

    千次阅读 2020-06-10 17:14:31
    Tiny4412核心板介绍02. Tiny4412核心板硬件资源特性03. Tiny4412底板资源分布图04. Android 4.2.2软件系统特性05. Linux+Qt软件系统特性06. 附录 01. Tiny4412核心板介绍 Tiny4412 是高性能的 Cortex-A9 核心板,...

    00. 目录

    01. Tiny4412核心板介绍

    在这里插入图片描述

    Tiny4412 是高性能的 Cortex-A9 核心板,它们由广州友善之臂设计、生产和发行销售。采用三星高性能的 Exynos 4412 四核处理器。

    Tiny4412是一款高性能的四核Cortex-A9核心板,由广州友善之臂设计、生产和发行销售。它采用三星Exynos4412作为主处理器,运行主频可高达1.5GHz,Exynos4412内部集成了Mali-400 MP高性能图形引擎,支持3D图形流畅运行,并可播放1080P大尺寸高清视频。三星旗舰智能手机Galaxy S3即是采用此CPU设计。

    Tiny4412核心板采用了2.0mm间距的双排针(P1, P2, P3, P4),尺寸为74x55mm,总共引出208Pin引脚。其中P1和P2排针为标配焊接,它们已经包含了大部分常用的功能;P3和P4空焊,方便用户扩展开发使用。Tiny4412实现了主控芯片难度最高的核心部分,因此非常适合企业用户进行快速产品设计或项目开发,核心板标配1GB DDR2内存和4GB高性能eMMC闪存(另可选配8/16/32GB等容量)。

    Tiny4412SDK是相应的参考设计底板,它带有各种常见的标准接口,比如HDMI输出,USB Host, SD卡,DB9串口,RJ-45以太网口,音频输入输出口等,还有一些在板资源测试器件如EEPROM,蜂鸣器,按键,GPIO口,SDIO口等等,以便用户全面的评估和使用核心板。因为Exynos4412定位主要是面向高端手持移动设备,为了做到低功耗,大部分IO口采用的是1.8V电压,这就导致无法适用于一些常见的传统IO模块,因此我们在底板上对几乎所有IO都做了电平转换(转为3.3V),以便于老用户依然能够兼容使用,这可以大大节省产品项目开发的时间。

    我们还充分地发挥了4412支持SD卡启动这一特性,精心研制了功能强大的Superboot-4412,无需连接电脑,只要把系统ROM拷贝到SD卡中(可支持高达32G的高速大容量卡),你就可以极速简单地自动安装各种嵌入式系统(Linux/Android/Ubuntu等);这非常适合企业用户批量生产和现场升级更新系统之用!

    紧跟时代发展的步伐,我们还采用跨平台的Qt4开发了全新的USB下载工具MiniTools,配合Superboot,用户可以像刷手机一样刷板,它采用了世界通用的Fastboot底层驱动,因此可以通吃几乎所有Windows系统(含32/bit-bit机器),并且可以支持各种发行版Linux,如Fedora、Ubuntu等系统。 使用MiniTools,无需串口连接,只要USB,用户可以选择单个或多个系统映像文件,下载和烧写一气呵成,真正实现一键烧写;另外,MiniTools还支持下载到内存运行,以及一键快速启动功能,因此,MiniTools也非常适合开发者快速调试开发之用!

    02. Tiny4412核心板硬件资源特性

    在这里插入图片描述

    03. Tiny4412底板资源分布图

    在这里插入图片描述

    04. Android 4.2.2软件系统特性

    参考用户手册

    05. Linux+Qt软件系统特性

    参考用户手册

    06. 附录

    6.1 参考网站

    参考:http://www.arm9.net/tiny4412.asp

    展开全文
  • tiny4412触摸屏.rar

    2020-04-15 22:48:57
    本压缩文件中包含了tiny4412触摸屏的测试代码和校准,按照文档中的操作步骤就能够轻松实现触摸屏的校准
  • tiny4412旧UBOOT补丁

    2018-11-12 21:47:59
    用于tiny4412光盘里Uboot打补丁,不然光盘里的uboot运行只会显示OK
  • TIny4412 uboot

    2018-08-22 07:54:32
    之前买的友善的板子tiny4412增强版,他们官方提供的uboot只能输出“ok”, 这个版本就是网上说的1506版本的uboot可以进行一些裸板程序的开发
  • 基于友善之臂的ARM-cotexA9驱动编写,包含蜂鸣器驱动的驱动代码和测试程序
  • Tiny4412中文用户手册

    2018-05-05 11:52:13
    此文档适合Tiny4412开发板的开发,学习嵌入式Linux,C语言,ARM9的可以作为参考,内容挺全乎的。
  • 高薪程序员必备刷题软件
  • Tiny4412 zImage文件

    2018-05-25 15:19:53
    该压缩包文件内含zImage文件和说明一份,适用于Tiny4412 1506开发板,注意是1506! 1506!1506!该zImage已关闭TrustZone模式,可搭配内附说明的uboot直接启动开发版!
  • tiny4412裸机相关程序

    2019-02-01 14:50:42
    嵌入式课程设计所需要的tiny4412裸机相关程序,内含全部的裸机程序代码
  • 该测试软件在Android源码下编译,可以在external下创建一个目录,加入以上代码和Android.mk,然后编译,使用C语言编写,一共有9个测试项目,可以在开机的时候加入init.rc下执行显示,包括RGB测试、按键测试、LED测试...
  • 使用的光谱仪设备是USB接口的,厂家只提供了windows下的驱动和配套软件,不支持Linux使用,也没有完善的资料,现在设备想在Linux系统下使用,要支持PClinux和嵌入式Linux设备,只能自己重新开发一个驱动再编写一个...
  • Tiny4412用户手册

    2018-11-04 03:48:25
    友善之臂Cortex-A9的开关板资料,是学习嵌入式系统的人员好的工具书籍。
  • 基于tiny4412开发板Android5.0.2系统的android内核,内核采用3.0.86版本,由友善之臂公司提供,可以引导进android系统

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,525
精华内容 1,410
关键字:

tiny4412

友情链接: 蜂鸣器实验.zip