TQ335X开发板内核3.17.2移植和busybox移植

2024-02-03 19:18

本文主要是介绍TQ335X开发板内核3.17.2移植和busybox移植,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

硬件平台:TQ335X_BOARD_V2.1

软件环境:VMWARE10+UBUNTU14.04

KERNEL:3.17.2

Busybox:1.20

参考

http://blog.csdn.net/girlkoo/article/details/41223733

http://blog.csdn.net/girlkoo/article/details/8719828

一、内核移植

老式的u-boot使用ATAGS的方式启动linux内核,本文使用新式的dtb方式启动内核。

我使用的内核是linux-3.17.2版本,下面开始编译内核。

(1) 解压内核

[php]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. tar jxf linux-3.17.2.tar.bz2  
(2)配置linux内核,由于am335x在内核中都归为omap2系列,故可以使用如下命令:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. make ARCH=arm omap2plus_defconfig  

(3)编译内核:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
我的linux工具链前缀是arm-linux-gnueabihf-,这个需要根据自己的实际的工具链情况进行替换。

(4)编译dtb:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x-evm.dtb  
(5)制作启动盘:

将SD格式化为FAT系统,将MLO、u-boot.img拷贝到根目录下。

在根目录下创建boot目录,将编译好的zImage和am335x-evm.dtb拷贝到该目录下。


二、busybox制作ramdisk文件系统

(1)创建根文件系统目录结构,可以使用如下脚本:

[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. #!/bin/sh  
  2. echo "------Create rootfs directons start...--------"  
  3. mkdir rootfs  
  4. cd rootfs  
  5. echo "--------Create root,dev....----------"  
  6. mkdir root dev etc boot tmp var sys proc lib mnt home usr   
  7. mkdir etc/init.d etc/rc.d etc/sysconfig  
  8. mkdir usr/sbin usr/bin usr/lib usr/modules  
  9. echo "make node in dev/console dev/null"  
  10. sudo mknod -m 600 dev/console c 5 1  
  11. sudo mknod -m 600 dev/null  c 1 3  
  12. mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp  
  13. mkdir var/lib var/lock var/run var/tmp  
  14. chmod 1777 tmp  
  15. chmod 1777 var/tmp  
  16. echo "-------make direction done---------"  

在这里我将脚本命名为mkrootfs.sh,接下来给脚本加可执行权限(即chmod a+x mkrootfs)并运行脚本。我的脚本是在~/work目录下运行的,所以我的根文件系统的根目录为~/work/rootfs,后面均以该目录为例阐述。

(2)编译Busybox

到Busybox下载最新版的Busybox源码,我是用的是1.20.0版本,下载完后解压并进入busybox目录,首先是配置busybox

[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. make menuconfig  

配置菜单跟配置内核时的差不多,依次进入Busybox Settings => Build Options => Cross Compiler prefix (NEW),设置为编译器的前缀,我的是arm-linux-。网上有些朋友还推荐选择Busybox Settings => Build Options => Build BusyBox as a static binary (no shared libs),但是如果我们正确拷贝编译器了运行库的话,不设置也可以。现在可以编译Busybox了,执行

[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. make  

编译过程很顺利,我这里没有遇到任何错误,接下来将编译好的Busybox安装到~/work/rootfs就可以了,执行

[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. make CONFIG_PREFIX=~/work/rootfs install  

(3)构建etc目录

在etc目录下创建Inittab文件,内容如下

[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. ::sysinit:/etc/init.d/rcS  
  2. console::askfirst:-/bin/sh  
  3. ::restart:/sbin/init  
  4. ::ctrlaltdel:/sbin/reboot  
  5. ::shutdown:/bin/umount -a -r  
  6. ::shutdown:/sbin/swapoff -a  

在etc/init.d/目录下创建rcS文件,内容如下

[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. echo "----------mount all.........."  
  2. mount -a  
  3. echo "----------Starting mdev......"  
  4. echo /sbin/mdev > /proc/sys/kernel/hotplug  
  5. mdev -s  
  6. /bin/hostname -F /etc/sysconfig/HOSTNAME  

为inittab和rcS文件添加可执行权限

[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. chmod a+x inittab  
  2. chmod a+x rcS  

在etc目录下创建fstab文件,内容如下

[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. #evice mount-point type       option       dump   fsck   order  
  2. proc /proc proc defaults 0 0  
  3. none /tmp ramfs defaults 0 0  
  4. mdev /dev ramfs defaults 0 0  
  5. sysfs /sys sysfs defaults 0 0  

在etc目录下创建profile文件,内容如下

[html]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. PATH=/bin:/sbin:/usr/bin:/usr/sbin    
  2. export PATH    
  3. #set hostname    
  4. HOSTNAME='/bin/hostname'    
  5. export HOSTNAME    
  6. # Set PS1    
  7. PS1='[\u@\h \W]\$'  
  8. export PS1  
拷贝主机/etc目录下的passwd和group文件到etc目录下。

(4) 设置HOSTNAME文件

在etc/sysconfig目录下创建HOSTNAME文件,在文件中写入主机名,我这里写的是tq335x。


(5)制作ramdisk

制作ramdisk的方式很多,最方便的是使用指令genext2fs。ubuntu操作系统上可以通过apt-get工具直接安装genext2fs工具:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. sudo apt-get install genext2fs  
其它操作系统也有类似的管理工具,这里就不一一列举了,下面使用genext2fs打包rootfs目录。命令如下:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. genext2fs -b 4096 -d rootfs/ ramdisk  

4096可以改成2^N,建议不要太大

然后使用gzip命令压缩ramdisk:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. gzip -9 -f ramdisk  
执行完成该命令后可以得到文件ramdisk.gz。

由于u-boot启动内核使用的ramdisk需要有u-boot的image头,故需要使用编译u-boot时生成的工具mkimage将ramdisk.gz制作为ramdisk.img。其中,工具mkimage位于u-boot的tools目录下,制作ramdisk.img的指令如下:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. u-boot-2015.07/tools/mkimage -A arm -O linux -T ramdisk -C none -a 0x88080000 -n "ramdisk" -d ramdisk.gz ramdisk.img  
命令中mkimage前的路径根据自己实际执行的路径指定即可。

这样,就完成了u-boot可以使用的ramdisk制作,然后将ramdisk.img拷贝到SD卡的boot目录下即可。

(6)挂载ramdisk

老式的ATAGS方式启动内核时使用ATAG传递bootargs给内核,由于本文使用的dtb方式启动内核,故采取dtb的chosen方式传递bootargs给内核。

Step1: 修改内核配置

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. make ARCH=arm menuconfig  
进入配置项:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. Boot options  --->  
按N键取消配置项:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. [ ] Use appended device tree blob to zImage (EXPERIMENTAL)  
官方内核默认启用了该项配置。启用该项配置后内核兼容老式的ATAGS方式内核启动,关闭后则使用新式的dtb方式启动,故此处禁用了此项配置。

按ESC保存配置后退出menuconfig画面,重新编译内核:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8  
Step2:添加bootargs到dtb

切换到内核目录arch/arm/boot/dts/,拷贝am335x-evm.dts为tq335x.dts:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. cp am335x-evm.dts tq335x.dts  
打开tq335x.dts,在memory项后通过chosen方式添加bootargs,添加内容如下:(注意TQ335X的SRAM是512MB)

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. memory {  
  2.     device_type = "memory";  
  3.     reg = <0x80000000 0x20000000>; /* 512 MB */  
  4. };  
  5.   
  6. chosen {  
  7.     bootargs = "console=ttyO0,115200n8 root=/dev/ram0";  
  8. };  
  9.   
  10. ...  
其中chosen节点是新添加的,memory节点是原有的。

接下来重新编译dtb:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tq335x.dtb  
将新编译得到的tq335x.dtb拷贝到SD的boot目录下。至此,准备工作就完成了,下面我们使用新制作的ramdisk.img和tq335x.dtb启动内核。

Step3:使用新制作的ramdisk.img和tq335x.dtb启动内核

将SD插到开发板上,给开发板上电(开发板切换到SD卡启动模式),可以通过按任意键打断内核启动进入u-boot命令模式(由于之前没有配置u-boot的bootcmd环境变量,而默认的u-boot环境无法启动内核,故,开发板上电后不按键的话也会进入u-boot的命令行模式)。

首先是加载内核到DRAM:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. load mmc 0 ${loadaddr} /boot/zImage  
其中,${loadaddr}在u-boot的环境变量中默认指定为0x82000000,这里可以直接打数字。

然后是加载dtb到DRAM:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. load mmc 0 ${fdtaddr} /boot/tq335x.dtb  
${fdtaddr}的默认值是0x88000000。

接下来加载ramdisk到DRAM:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. load mmc 0 ${rdaddr} /boot/ramdisk.img  
${rdaddr}的默认值是0x88080000
最后就是将ramdisk和dtb的加载地址作为参数启动内核:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. bootz ${loadaddr} ${rdaddr} ${fdtaddr}  
至此,Linux内核已经能够正常启动并进入终端模式了。

启动Log如下:


三、启动

(1)u-boot命令行启动Linux内核

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. setenv bootargs 'console=ttyO0,115200n8 root=/dev/ram0'  
  2. load mmc 0 0x82000000 /boot/zImage
  3. load mmc 0 0x88000000 /boot/tq335x.dtb
  4. load mmc 0 0x88080000 /boot/ramdisk.img  
  5. bootz 0x82000000 0x88080000 0x88000000  
至此,Linux内核就能启动了,看到的Log信息如下:

U-Boot 2015.07 (May 31 2016 - 20:18:36 +0800)Watchdog enabled
I2C:   ready
DRAM:  512 MiB
NAND:  1024 MiB
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Net:   cpsw, usb_ether
Hit any key to stop autoboot:  0
WARNING: Could not determine device tree to use
Card did not respond to voltage select!
SD/MMC found on device 1
Card did not respond to voltage select!
** Bad device mmc 1 **
Card did not respond to voltage select!
** Bad device mmc 1 **
Card did not respond to voltage select!
** Bad device mmc 1 **
Card did not respond to voltage select!
SD/MMC found on device 1
Card did not respond to voltage select!
** Bad device mmc 1 **
Card did not respond to voltage select!
** Bad device mmc 1 **
Card did not respond to voltage select!
** Bad device mmc 1 **
Booting from nand ...NAND read: incorrect device type in u-boot-spl-osNAND read: incorrect device type in kernel
Bad Linux ARM zImage magic!
U-Boot# setenv bootargs 'console=ttyO0,115200n8 root=/dev/ram0';
U-Boot# load mmc 0 0x82000000 /boot/zImage;
4370192 bytes read in 242 ms (17.2 MiB/s)
U-Boot# load mmc 0 0x88000000 /boot/tq335x.dtb;
34781 bytes read in 9 ms (3.7 MiB/s)
U-Boot# load mmc 0 0x88080000 /boot/ramdisk.img;
967070 bytes read in 59 ms (15.6 MiB/s)
U-Boot# bootz 0x82000000 0x88080000 0x88000000
Kernel image @ 0x82000000 [ 0x000000 - 0x42af10 ]
## Loading init Ramdisk from Legacy Image at 88080000 ...Image Name:   ramdiskCreated:      2016-05-31   8:15:53 UTCImage Type:   ARM Linux RAMDisk Image (uncompressed)Data Size:    967006 Bytes = 944.3 KiBLoad Address: 88080000Entry Point:  88080000Verifying Checksum ... OK
## Flattened Device Tree blob at 88000000Booting using the fdt blob at 0x88000000Loading Ramdisk to 8ff13000, end 8ffff15e ... OKLoading Device Tree to 8ff07000, end 8ff127dc ... OKStarting kernel ...[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.17.2 (stephen@ubuntu) (gcc version 4.9.3 20150413                                                                              (prerelease) (Linaro GCC 4.9-2015.05) ) #3 SMP Tue May 31 14:47:26 CST 2016
[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instructio                                                                             n cache
[    0.000000] Machine model: TI AM335x EVM
[    0.000000] cma: Reserved 16 MiB at 9e800000
[    0.000000] Memory policy: Data cache writeback
[    0.000000]   HighMem zone: 1048574 pages exceeds freesize 0
[    0.000000] CPU: All CPU(s) started in SVC mode.
[    0.000000] AM335X ES2.1 (sgx neon )
[    0.000000] PERCPU: Embedded 9 pages/cpu @dfa9a000 s14336 r8192 d14336 u36864
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pag                                                                             es: 129792
[    0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/ram0
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 483808K/523264K available (5697K kernel code, 646K rwdata                                                                             , 2208K rodata, 406K init, 8210K bss, 39456K reserved, 0K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xffe00000   (2048 kB)
[    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc07c096c   (7907 kB)
[    0.000000]       .init : 0xc07c1000 - 0xc0826800   ( 406 kB)
[    0.000000]       .data : 0xc0828000 - 0xc08c9b08   ( 647 kB)
[    0.000000]        .bss : 0xc08c9b08 - 0xc10ce690   (8211 kB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrup                                                                             ts
[    0.000000] Total of 128 interrupts on 1 active controller
[    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
[    0.000014] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 17895                                                                             6969942ns
[    0.000059] OMAP clocksource: timer1 at 24000000 Hz
[    0.000758] Console: colour dummy device 80x30
[    0.000807] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo                                                                              Molnar
[    0.000816] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.000823] ... MAX_LOCK_DEPTH:          48
[    0.000830] ... MAX_LOCKDEP_KEYS:        8191
[    0.000837] ... CLASSHASH_SIZE:          4096
[    0.000844] ... MAX_LOCKDEP_ENTRIES:     32768
[    0.000851] ... MAX_LOCKDEP_CHAINS:      65536
[    0.000859] ... CHAINHASH_SIZE:          32768
[    0.000866]  memory used by lock dependency info: 5167 kB
[    0.000873]  per task-struct memory footprint: 1152 bytes
[    0.000915] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
[    0.079099] pid_max: default: 32768 minimum: 301
[    0.079476] Security Framework initialized
[    0.079598] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.079612] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.081757] CPU: Testing write buffer coherency: ok
[    0.082896] CPU0: thread -1, cpu 0, socket -1, mpidr 0
[    0.083017] Setting up static identity map for 0x8056ef90 - 0x8056f000
[    0.086163] Brought up 1 CPUs
[    0.086183] SMP: Total of 1 processors activated.
[    0.086194] CPU: All CPU(s) started in SVC mode.
[    0.088748] devtmpfs: initialized
[    0.097390] VFP support v0.3: implementor 41 architecture 3 part 30 variant c                                                                              rev 3
[    0.133743] omap_hwmod: tptc0 using broken dt data from edma
[    0.134103] omap_hwmod: tptc1 using broken dt data from edma
[    0.134444] omap_hwmod: tptc2 using broken dt data from edma
[    0.142408] omap_hwmod: debugss: _wait_target_disable failed
[    0.200207] pinctrl core: initialized pinctrl subsystem
[    0.202672] regulator-dummy: no parameters
[    0.232113] NET: Registered protocol family 16
[    0.240467] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.242559] cpuidle: using governor ladder
[    0.242583] cpuidle: using governor menu
[    0.254378] OMAP GPIO hardware version 0.1
[    0.269479] omap-gpmc 50000000.gpmc: could not find pctldev for node /pinmux@                                                                             44e10800/nandflash_pins_s0, deferring probe
[    0.269521] platform 50000000.gpmc: Driver omap-gpmc requests probe deferral
[    0.274008] No ATAGs?
[    0.274038] hw-breakpoint: debug architecture 0x4 unsupported.
[    0.316701] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
[    0.318009] vbat: 5000 mV
[    0.318759] lis3_reg: no parameters
[    0.322094] SCSI subsystem initialized
[    0.322897] usbcore: registered new interface driver usbfs
[    0.323077] usbcore: registered new interface driver hub
[    0.326563] usbcore: registered new device driver usb
[    0.327392] omap_i2c 44e0b000.i2c: could not find pctldev for node /pinmux@44                                                                             e10800/pinmux_i2c0_pins, deferring probe
[    0.327429] platform 44e0b000.i2c: Driver omap_i2c requests probe deferral
[    0.327484] omap_i2c 4802a000.i2c: could not find pctldev for node /pinmux@44                                                                             e10800/pinmux_i2c1_pins, deferring probe
[    0.327508] platform 4802a000.i2c: Driver omap_i2c requests probe deferral
[    0.331789] Switched to clocksource timer1
[    0.477768] NET: Registered protocol family 2
[    0.479589] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.479762] TCP bind hash table entries: 4096 (order: 5, 147456 bytes)
[    0.480966] TCP: Hash tables configured (established 4096 bind 4096)
[    0.481149] TCP: reno registered
[    0.481172] UDP hash table entries: 256 (order: 2, 20480 bytes)
[    0.481343] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes)
[    0.482573] NET: Registered protocol family 1
[    0.484432] RPC: Registered named UNIX socket transport module.
[    0.484456] RPC: Registered udp transport module.
[    0.484466] RPC: Registered tcp transport module.
[    0.484475] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.485329] Trying to unpack rootfs image as initramfs...
[    0.486742] rootfs image is not initramfs (no cpio magic); looks like an init                                                                             rd
[    0.493217] Freeing initrd memory: 944K (cff13000 - cffff000)
[    0.493672] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counter                                                                             s available
[    0.497833] futex hash table entries: 256 (order: 2, 16384 bytes)
[    0.503274] VFS: Disk quotas dquot_6.5.2
[    0.503419] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.505845] NFS: Registering the id_resolver key type
[    0.506197] Key type id_resolver registered
[    0.506212] Key type id_legacy registered
[    0.506366] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[    0.506789] msgmni has been set to 978
[    0.511532] io scheduler noop registered
[    0.511734] io scheduler deadline registered
[    0.511811] io scheduler cfq registered (default)
[    0.514067] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[    0.517027] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.522737] omap_uart 44e09000.serial: no wakeirq for uart0
[    0.523268] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88, base_baud =                                                                              3000000) is a OMAP UART0
[    1.230156] console [ttyO0] enabled
[    1.238657] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
[    1.267794] brd: module loaded
[    1.284974] loop: module loaded
[    1.291133] mtdoops: mtd device (mtddev=name/number) must be supplied
[    1.301020] usbcore: registered new interface driver asix
[    1.306871] usbcore: registered new interface driver ax88179_178a
[    1.313398] usbcore: registered new interface driver cdc_ether
[    1.319662] usbcore: registered new interface driver smsc95xx
[    1.325819] usbcore: registered new interface driver net1080
[    1.331884] usbcore: registered new interface driver cdc_subset
[    1.338184] usbcore: registered new interface driver zaurus
[    1.344247] usbcore: registered new interface driver cdc_ncm
[    1.351260] usbcore: registered new interface driver cdc_wdm
[    1.357423] usbcore: registered new interface driver usb-storage
[    1.363889] usbcore: registered new interface driver usbtest
[    1.380977] mousedev: PS/2 mouse device common for all mice
[    1.391413] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
[    1.399585] i2c /dev entries driver
[    1.403376] Driver for 1-wire Dallas network protocol.
[    1.412155] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[    1.422003] omap_hsmmc 48060000.mmc: unable to get vmmc regulator -517
[    1.429435] platform 48060000.mmc: Driver omap_hsmmc requests probe deferral
[    1.437514] ledtrig-cpu: registered to indicate activity on CPUs
[    1.444382] usbcore: registered new interface driver usbhid
[    1.450203] usbhid: USB HID core driver
[    1.455475] oprofile: using arm/armv7
[    1.459907] TCP: cubic registered
[    1.463448] Initializing XFRM netlink socket
[    1.468016] NET: Registered protocol family 17
[    1.472773] NET: Registered protocol family 15
[    1.477726] Key type dns_resolver registered
[    1.482395] omap_voltage_late_init: Voltage driver support not added
[    1.489047] sr_dev_init: No voltage domain specified for smartreflex0. Cannot                                                                              initialize
[    1.497525] sr_dev_init: No voltage domain specified for smartreflex1. Cannot                                                                              initialize
[    1.506994] ThumbEE CPU extension supported.
[    1.511504] Registering SWP/SWPB emulation handler
[    1.516567] SmartReflex Class3 initialized
[    1.529168] omap-gpmc 50000000.gpmc: GPMC revision 6.0
[    1.536278] nand: device found, Manufacturer ID: 0x01, Chip ID: 0xd3
[    1.543025] nand: AMD/Spansion S34ML08G1
[    1.547122] nand: 1024MiB, SLC, page size: 2048, OOB size: 64
[    1.553143] nand: error: CONFIG_MTD_NAND_OMAP_BCH not enabled
[    1.559226] omap2-nand: probe of omap2-nand.0 failed with error -22
[    1.676440] tps65910 0-002d: No interrupt support, no core IRQ
[    1.692216] vrtc: 1800 mV
[    1.695595] vrtc: supplied by vbat
[    1.702928] vio: at 1500 mV
[    1.706168] vio: supplied by vbat
[    1.712981] vdd_mpu: 912 <--> 1312 mV at 1325 mV
[    1.718114] vdd_mpu: supplied by vbat
[    1.725155] vdd_core: 912 <--> 1150 mV at 1137 mV
[    1.730372] vdd_core: supplied by vbat
[    1.737082] vdd3: 5000 mV
[    1.742588] vdig1: at 1800 mV
[    1.745999] vdig1: supplied by vbat
[    1.752538] vdig2: at 1800 mV
[    1.755947] vdig2: supplied by vbat
[    1.762371] vpll: at 1800 mV
[    1.765684] vpll: supplied by vbat
[    1.771963] vdac: at 1800 mV
[    1.775270] vdac: supplied by vbat
[    1.781430] vaux1: at 1800 mV
[    1.784923] vaux1: supplied by vbat
[    1.791216] vaux2: at 3300 mV
[    1.794707] vaux2: supplied by vbat
[    1.801070] vaux33: at 3300 mV
[    1.804652] vaux33: supplied by vbat
[    1.811012] vmmc: 1800 <--> 3300 mV at 3300 mV
[    1.816037] vmmc: supplied by vbat
[    1.822109] vbb: at 3000 mV
[    1.825557] vbb: supplied by vbat
[    1.830756] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
[    1.844057] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz
[    1.940015] mmc0: host does not support reading read-only switch. assuming wr                                                                             ite-enable.
[    1.950860] mmc0: new high speed SDHC card at address 0007
[    1.958678] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[    1.965135] davinci_mdio 4a101000.mdio: detected phy mask ffffffde
[    1.972834] mmcblk0: mmc0:0007 SD4GB 3.68 GiB
[    1.983712]  mmcblk0:
[    1.989130] libphy: 4a101000.mdio: probed
[    1.993465] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driv                                                                             er unknown
[    2.001862] davinci_mdio 4a101000.mdio: phy[5]: device 4a101000.mdio:05, driv                                                                             er unknown
[    2.011389] cpsw 4a100000.ethernet: Detected MACID = c4:ed:ba:8e:5a:27
[    2.022361] input: volume_keys@0 as /devices/volume_keys@0/input/input0
[    2.032621] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:0                                                                             0 UTC (946684800)
[    2.041730] sr_init: No PMIC hook to init smartreflex
[    2.047299] sr_init: platform driver register failed for SR
[    2.070807] lis3_reg: disabling
[    2.077047] RAMDISK: gzip image found at block 0
[    2.204812] VFS: Mounted root (ext2 filesystem) readonly on device 1:0.
[    2.212638] devtmpfs: mounted
[    2.216373] Freeing unused kernel memory: 404K (c07c1000 - c0826000)
----------mount all..........
----------Starting mdev......Please press Enter to activate this console.
[root@tq335x /]#



这篇关于TQ335X开发板内核3.17.2移植和busybox移植的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/675120

相关文章

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern