tiny4412学习(二)之移植linux-4.x支持设备树

发布者:TranquilSoul最新更新时间:2022-03-31 来源: eefocus关键字:tiny4412  设备树 手机看文章 扫描二维码
随时随地手机看文章

硬件平台:tiny4412

系统:linux-4.4

文件系统:busybox-1.25

编译器: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320)

uboot:友善自带uboot,见上节

实验参考摩斯电码的博客:

http://www.cnblogs.com/pengdonglin137/p/5137941.html

http://www.cnblogs.com/pengdonglin137/p/5143516.html

一、u-boot修改

1、更新交叉工具链

到:http://www.veryarm.com/arm-none-linux-gnueabi-gcc

下载:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

tar –xjf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

修改环境变量:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/gcc/arm-2014.05/bin"

arm-none-linux-gnueabi-gcc -v:

gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)

2、关闭uboot开启的MMU

(1)修改include/configs/tiny4412.h


#define CONFIG_ENABLE_MMU


修改为


#undef CONFIG_ENABLE_MMU


(2) 只关闭MMU还不够,还需要修改u-boot的链接地址

修改文件board/samsung/tiny4412/config.mk



CONFIG_SYS_TEXT_BASE = 0xc3e00000


修改为


CONFIG_SYS_TEXT_BASE = 0x43e00000


因为板子是1G内存,从4000 0000 开始


4000 0000 - 5000 0000 256M


......


7000 0000 - 8000 0000 1G


3、使uboot可以引导uImage

修改uboot源码下:common/cmd_bootm.c


(1)


int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])

{

        ulong           iflag;

        ulong           load_end = 0;

        int             ret;

        boot_os_fn      *boot_fn;

        int             iszImage = 0;


(2)


images.legacy_hdr_valid = 1;            


iszImage = 1;               


goto after_header_check;.


(3)


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);      


}


4、修改uboot支持设备树


修改include/configs/tiny4412.h


增加如下两个宏


#define CONFIG_OF_LIBFDT

#define CONFIG_SYS_BOOTMAPSZ (20 << 20)


5、编译uboot

(1)修改makefile,增加:


ifeq ($(ARCH),arm)


CROSS_COMPILE ?=/work/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-


endif


(2)make distclean


(3)make tiny4412_config


(4)make


(5)烧写到SD卡



cd sd_fuse/tiny4412


./sd_fusing.sh /dev/sdc (fdisk -l查看)


(6)启动uboot


U-Boot 2010.12 (Jul 02 2017 - 11:26:09) 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

fwbl1: 0

iram block: 16

u-boot: 48

TrustZone S/W: 704

env: 1024

knl: 1057

rfs: 13345

bl2: 16

MMC Device 0: 14756 MB

lizuobin read idff

lizuobin read idff

lizuobin read idff

lizuobin read idff

fwbl1: 0

iram block: 16

u-boot: 48

TrustZone S/W: 704

env: 1024

knl: 1057

rfs: 13345

bl2: 16

MMC Device 1: 3728 MB

MMC Device 2: N/A

Net:    No ethernet found.

Hit any key to stop autoboot:  0 

二、内核及文件系统系统制作

1、内核移植(支持设备树)

(1)下载源码:https://www.kernel.org/pub/linux/kernel/v4.x/  下载  linux-4.4.tar.gz  


(2)解压:tar –xzf  linux-4.4.tar.gz 


(3)cd linux-4.4


(4)修改makefile,增加



+ARCH           ?= arm

+CROSS_COMPILE  ?= /work/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-

(5)配置:linux-4.4 已经很好的支持了tiny4412,所以移植的工作并不多。



make exynos_defconfig

(6) 修改arch/arm/boot/dts/exynos4412-tiny4412.dts

      chosen {                

stdout-path = &;serial_0;                

bootargs = "root=/dev/ram0 rw rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc earlyprintk";     };


        pinctrl-names = "default";

        #status = "okay";       

status = "disabled"; 

}&serial_0 

(7)配置内核,支持ramdisk

make menuconfig

File systems --->;

    <*> Second extended fs support

Device Drivers

    SCSI device support --->;

        <*> SCSI disk support

    Block devices --->;

        <*>RAM block device support

        (16)Default number of RAM disks

        (8192) Default RAM disk size (kbytes) (修改为8M)

General setup --->;

    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

(8) 配置内核,使其支持tmpfs

$ make menuconfig

File systems --->;

    Pseudo filesystems --->

        [*] Virtual memory file system support (former shm fs)

        [*] Tmpfs POSIX Access Control Lists

exynos的默认配置也已经支持了。

(9)编译产生uImage

make uImage LOADADDR=0x40008000 -j2

生成的uImage在arch/arm/boot下。 

(10)编译设备树

make dtbs

arch/arm/boot/dts/会生成tiny4412上用的设备树镜像文件exynos4412-tiny4412.dtb。

(11)文件系统制作

下载busybox的代码,制作ramdisk镜像。

三、下载测试

下载内核、文件系统、设备树文件

#u-boot:dnw 0x40600000

dnw arch/arm/boot/uImage

#u-boot:dnw 0x41000000 

dnw ramdisk.img

#u-boot:dnw 0x42000000

dnw arch/arm/boot/dts/exynos4412-tiny4412.dtb

启动内核 使用bootm启动内核:

bootm 0x40600000 0x41000000 0x42000000


启动日志:

TINY4412 # bootm 0x40600000 0x41000000 0x42000000

## Booting kernel from Legacy Image at 40600000 ...

   Image Name:   Linux-4.4.0

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    4193128 Bytes = 4094 KiB

   Load Address: 40008000

   Entry Point:  40008000

   Verifying Checksum ... OK

## Loading init Ramdisk from Legacy Image at 41000000 ...

   Image Name:   ramdisk

   Image Type:   ARM Linux RAMDisk Image (gzip compressed)

   Data Size:    2585838 Bytes = 2525 KiB

   Load Address: 00000000

   Entry Point:  00000000

   Verifying Checksum ... OK

## Flattened Device Tree blob at 42000000

   Booting using the fdt blob at 0x42000000

   Loading Kernel Image ... OK

OK

## Loading init Ramdisk from Legacy Image at 41000000 ...

   Image Name:   ramdisk

   Image Type:   ARM Linux RAMDisk Image (gzip compressed)

   Data Size:    2585838 Bytes = 2525 KiB

   Load Address: 00000000

   Entry Point:  00000000

   Verifying Checksum ... OK

   Loading Ramdisk to 43a84000, end 43cfb4ee ... OK

   Loading Device Tree to 413f2000, end 413ff555 ... OK

 

Starting kernel ...

 

[    0.000000] Booting Linux on physical CPU 0xa00

[    0.000000] Linux version 4.4.0 (root@book-virtual-machine) (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29) ) #1 SMP PREEMPT Sun Jul 2 11:55:00 CST 2017

[    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d

[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

[    0.000000] Machine model: FriendlyARM TINY4412 board based on Exynos4412

[    0.000000] cma: Reserved 64 MiB at 0x7bc00000

[    0.000000] Memory policy: Data cache writealloc

[    0.000000] Samsung CPU ID: 0xe4412011

[    0.000000] PERCPU: Embedded 12 pages/cpu @ef79c000 s18816 r8192 d22144 u49152

[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260352

[    0.000000] Kernel command line: root=/dev/mmcblk0p1 rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc ctp=2 skipcali=y loglevel=7

[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)

[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)

[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)

[    0.000000] Memory: 961316K/1047552K available (5715K kernel code, 239K rwdata, 2020K rodata, 432K init, 315K bss, 20700K reserved, 65536K cma-reserved, 195584K highmem)

[    0.000000] Virtual kernel memory layout:

[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)

[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)

[    0.000000]     vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)

[    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)

[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)

[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)

[    0.000000]       .text : 0xc0008000 - 0xc0795eac   (7736 kB)

[    0.000000]       .init : 0xc0796000 - 0xc0802000   ( 432 kB)

[    0.000000]       .data : 0xc0802000 - 0xc083de00   ( 240 kB)

[    0.000000]        .bss : 0xc0840000 - 0xc088ec28   ( 316 kB)

[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1

[    0.000000] Preemptible hierarchical RCU implementation.

[    0.000000]  Build-time adjustment of leaf fanout to 32.

[    0.000000]  RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.

[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=4

[    0.000000] NR_IRQS:16 nr_irqs:16 16

[    0.000000] GIC physical location is 0x10490000

[    0.000000] L2C: platform modifies aux control register: 0x02070000 -> 0x3e470001

[    0.000000] L2C: platform provided aux values permit register corruption.

[    0.000000] L2C: DT/platform modifies aux control register: 0x02070000 -> 0x3e470001

[1] [2]
关键字:tiny4412  设备树 引用地址:tiny4412学习(二)之移植linux-4.x支持设备树

上一篇:tiny4412学习(四)之移植linux-设备树(1)设备树基础知识及GPIO中断
下一篇:tiny4412学习(一)之从零搭建linux系统(烧写uboot、内核进emmc+uboot启动内核)

推荐阅读最新更新时间:2024-11-08 14:12

开放x86架构为中石化掘金数据分析提速
石油是现代工业文明的动力之源。对于中国这样一个高速发展的经济体,每年消耗的石油超过5亿吨。这些石油从哪来?如何炼化成工业所使用的不同标号的汽油、柴油和煤油?它们又是怎样销售的?在这个复杂的体系中,中国石化集团在其中的作用不言而喻。 中石化在全国拥有超过3万个加油站,年营收超过2万亿人民币,每年向市场销售上亿吨各类油品,同时每年也会生产上千万吨乙烯及合成树脂等化工原料。与此同时,中石化还涉及石油勘探、开采等大量其他业务。可以说中石化是一家名副其实的超级企业。 而对于这样一家上市企业,每月、每季、每年的财务、销售情况都需要进行详细的统计以便发布财报和审计之用,这家超级企业是如何完成这一看似不可能的任务的? 中石化:数据分析压力拷
[嵌入式]
Mouser 备货Freescale Kinetis KV1x 微控制器
2014 年 7 月 11 日 – 贸泽电子 (Mouser Electronics) 即日起开始供应Freescale Semiconductor 的 Kinetis® KV1x 微控制器系列产品。Kinetis V 系列 KV1x MCU 产品是 Freescale 全新 Kinetis V 系列的入门级产品,此可扩展的微控制器 (MCU) 系列产品的目标应用市场为数字电机控制。采用 75 MHz ARM® CortexM0+ 内核的 Kinetis KV1x 系列产品具有整数除法和平方根协处理器,从而降低了因需要电机控制算法而引起的 CPU 负荷。 相较于同级的其他微控制器,Mouser Electronics 提供
[工业控制]
超越S参数测试-安捷伦科技最先进的矢量网络分析仪PNA-X
无论在研发还是在生产制造中,工程师们在测试射频元件时都面临许多重大挑战。在研发过程中,更快并以较少的重复工作来解决设计难题至关重要。生产制造过程中,需要在保持精度和最大产出率的同时,缩短测试时间和降低测试成本。 减缓压力的方法之一是使用灵活的高度综合的测试解决方案――如Agilent N5242A PNA-X微波网络分析仪。由于PNA-X的先进体系结构,它不仅提供卓越的性能和精度,而且还能针对超越与网络分析仪相关的传统散射参数(S参数)的各种测量进行配置。一些内置组件(如第二个信号源和宽带合路器)能对射频和微波器件,尤其是放大器、混频器和变频器的非线性特性进行非常精确的表征,让您对这些器件的性能有更加全面的了解。 确保精确的系
[应用]
走近小马智行,深入了解这家自动驾驶独角兽的技术链条
小马智行的 Robotaxi 已经进一步融入了公众的生活之中。 如果你在北京亦庄的路上溜达一圈,你会发现,小马智行的 Robotaxi 已经进一步融入了生活之中。 继广州之后,这家自动驾驶独角兽近日全面向北京公众扩大开放 Robotaxi 服务,站点约有 150 个,范围覆盖北京经开区 150 平方公里的核心区域。 体验的方式也很简单——下载 PonyPilot+ APP、就近选择站点、耐心等待。 只要在运营时间内(早 8:30 - 晚 22:30),不管是早晚高峰,还是雾霾暴雨,属于你的那一辆 Robotaxi 都会安全地接上你,再将你送达目的地。 加上此前政策先行区的开设,从亦庄到大兴机场之间的 Rob
[嵌入式]
走近小马智行,深入了解这家自动驾驶独角兽的技术链条
俄罗斯厂商推液体黄金苹果iPhone X:售价3万元
近日俄罗斯奢侈品厂商CAVIAR就推出了两款黄金iPhone X,其中有一款采用了液体黄金。 这款液体黄金iPhone X边框采用纯金打造,刻有CAVIAR LUXURY STANDARD标志。背部由各种切割的几何形状组成,苹果的logo采用悬浮凸起的设计。 这款液体黄金iPhone X的售价也相当惊人,64GB版的售价为274000卢布(约合人民币30350元),256GB版本的售价则为289000卢布(约合人民币32011元),几乎是普通版iPhone X售价的4-5倍。 另一款“亲民版”黄金iPhone X采用的是黄金机身+纹路设计,苹果logo同样悬浮凸起,其64GB版价格为257000卢布(
[手机便携]
恩智浦推出全新LPC84x系列
微控制器供应商恩智浦半导体(NXP Semiconductors N.V.)(纳斯达克代码:NXPI)今日推出LPC84x系列。LPC84x系列是快速扩展的32位微控制器LPC800系列(基于ARM® 30MHz Cortex®-M0+)的最新产品,旨在平衡功率、性能和价格,满足市场对于简化和加快开发的需求,从而助力下一代设计变得更加智能、低成本和高功效。 恩智浦资深副总裁兼微控制器业务线总经理Geoff Lees表示:“我们与广大客户群合作,将LPC84x系列投入量产,为此我们感到非常兴奋。相比老化的专有8位MCU,新系列进一步延伸了LPC800独特的创新特性。” LPC84x系列的创新基于一种独特的方式,无需CPU干预
[单片机]
十核10纳米工艺 传联发科Helio X30明年发布
    说到手机处理器目前市面上主要分为高通和联发科两大阵营,在中高端智能手机行列几乎都是高通芯片的声音。而联发科近年来也逐渐发力,在中高端处理器的技术水平上也渐渐向高通看起。近日消息称联发科全新一代处理器Helio X30将在明年正式发布。 Helio X30(图片引自cnbeta)     虽然官方还没有公布具体的发布时间,不过有台媒消息称其将在2017年第一季度量产。联发科官方也表示Helio X30依旧会采用十核芯,并且将换用台积电最新的10纳米工艺制程。   据悉在具体配置方面这颗十核芯处理器将内置2个最新的ARM Cortex-A73内核(代号Artemis),主频最高可达2.8GHz,主要负责一些艰 巨的任
[手机便携]
三星起诉代言人赔1100万元:因被拍到用苹果iPhone X
        俄罗斯电视节目主持人、记者和政治家Ksenia Sobchak是三星在该国的智能手机品牌代言人,她与三星签订的合同条款要求其在公众场合使用三星品牌的手机,条款明确规定不能在公共场合被看到使用竞争对手的设备。   据报道,36岁的Sobchak是俄罗斯总统弗拉基米尔·普京的教女,她在电视采访中被拍到使用苹果iPhone X,显然违反了上述条款。她试图在采访期间用一张纸来隐藏设备,但显然失败了。三星现在起诉了Sobchak,索赔以1.08亿卢布,约合人民币1100万元。   Sobchak女士除了在电视节目上被发现使用iPhone X外,还在莫斯科的社交活动中使用iPhone手机,显然也违反了她的合同。
[手机便携]
热门资源推荐
热门放大器推荐
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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