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

AM335x(TQ335x)学习笔记——挂载Ramdisk 上篇文章中我们已经能够通过u-boot启动内核了,但是没有能够启动成功,从内核的log中可以看出,内核启动失败的原因是没有挂载到root文件系统,本文将使用busybox制作根文件系统并打包成ramdisk供u-boot启动内核使用。(1)制作根文件系统使用busybox构建根文件系统的步骤可以参考本博客的另外一篇文章,该文章链接如下:S5PV210(TQ210)学习笔记——内核移植与文件系统构建 阅读详情

硬件平台:TQ335X_BOARD_V2.1

软件环境:VMWARE10+UBUNTU14.04

KERNEL:3.17.2

Busybox:1.20

参考

http://blog.youkuaiyun.com/girlkoo/article/details/41223733

http://blog.youkuaiyun.com/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-os

NAND 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:   ramdisk
   Created:      2016-05-31   8:15:53 UTC
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    967006 Bytes = 944.3 KiB
   Load Address: 88080000
   Entry Point:  88080000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Ramdisk to 8ff13000, end 8ffff15e ... OK
   Loading Device Tree to 8ff07000, end 8ff127dc ... OK

Starting 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 /]#



Ubuntu 24.04 下 NoMachine 极速安装与远程桌面配置全攻略 本文详细介绍了在Ubuntu 24.04系统下安装和配置NoMachine远程桌面的完整指南。从系统准备、分步安装到性能调优和常见问题解决,帮助用户快速实现低延迟的远程桌面访问。特别适合开发者和IT管理员在Linux环境下高效部署远程工作环境。 阅读详情

相关推荐

产品必备技能(十):如何绘制原型图?先要绘制页面流程图+页面原型图!附实操原型图、流程图实例(抖音)

文章目录目标题目实操步骤模板实操【抖音】APP的视频发布功能页面流程绘制页面流程图合格标准绘制页面原型图合格标准 目标 新入行的产品经理都对原型抱有向往的心境,但是有经验的产品经理不会一上来就画原型,而是先画页面流程再来画原型。通过学习,你将学会如何用页面流程图规划用户行为路径、如何借助原型识别问题、减少风险、有效沟通。 题目 任意选择一款你喜欢的产品,体验某个功能,下载并梳理此功能至少5个以上的页面流程跳转点(后面会解释),还原2 - 3个主要界面的低保真原型图。 实操步骤 可使用手绘以及Process

汪雯琦的博客 4841

ZYNQ #5 - 从vivado工程开始,从emmc启动Linux

本文从最简单的petalinux需求的vivado工程开始,建立一个能跑起来linux的vivado工程。同时将linux kernel、根文件系统部署在接到SD1接口上的emmc中,qspi-flash中放置BOOT.BIN,uboot唤起emmc中的image.ub。并填坑关于petalinux在SD0为空时,配置从SD1启动的bug 目录 1 - VIVADO工程建立 1.1...

里先森 1万+

“挑战杯”大赛“揭榜挂帅”赛道-baseline解析

在这个脚本中,txt文件的保存路径为'yolov7/datasets/Fatigue_driving_detection/txt_labels/',而xml文件的路径为'./label_xml/'。标注图片后的产物是会给每一个图片对应生成一个xml格式的文件,但是如果要用yolo框架去训练模型,输入的数据必须是txt格式,因此这里有一步转换格式的过程。注意看:obs这里有三个文件夹,第一个是关键帧的文件夹A,第二个是标注时输出的位置为文件夹B,第三个是智能标注后和手动标注的合集文件夹C。

m0_62899814的博客 2321

内核启动卡在 Starting kernel ...

  一、有时log是这样的 Card did not respond to voltage select! 9889800 bytes read in 237 ms (39.8 MiB/s) 70155 bytes read in 5 ms (13.4 MiB/s) ## Flattened Device Tree blob at 48000000 Booting using the fdt blob at 0x48000000 Using Device Tree in place at 0000

shenlong1356的博客 5426

视频生成工具本地部署完全指南:Seedance能装吗?有哪些开源替代?

本文系统介绍了视频生成模型的本地部署方案,分为三个部分:1)Seedance 2.0的混合部署模式,其开源组件可本地集成但核心功能需调用API;2)完全开源替代方案对比,包括LTX-2、Wan 2.1等模型的硬件需求与特点;3)详细部署指南,以ComfyUI+Wan 2.1为例,涵盖软件准备、模型整合、参数调优等步骤,并提供了显存优化和多GPU配置技巧。文章为需要离线视频生成能力的用户提供了完整技术路径。

小明的博客 1万+

AUTO-DL平台快速部署BEVFormer:Nuscenes数据集完整训练避坑指南

本文详细介绍了在AUTO-DL平台高效部署BEVFormer模型并利用Nuscenes数据集进行完整训练的实战指南。重点解析了平台数据管理、环境配置、数据集迁移解压、预处理及训练启动等全流程中的关键步骤与常见避坑技巧,帮助研究者和工程师快速复现这一前沿视觉感知模型,节省云端训练时间与成本。

weixin_29188043的博客 330

对海思平台的板子测试

对海思平台的板子测试 0、拆下emmc的cmd上拉电阻,无不良现象 1.海思芯片拆下会不下载程序 2. 当ddr被拆下,串口下载程序进行到一半会终止 3. boot seel 电阻未正确设置会出现card did not respond voltage selected 4. ddr zq250欧姆电阻拆下, xshell只打印system startup。 5. 断开emmc clk连接,xshell打印空格; SENSOR0_RSTN/BOOT_SEL1 r30 10k从坏的板子上取下来,不下载且

torffin的博客 1587

Windows Server 2019整机备份与异机还原实战:从虚拟机到物理机的完整迁移指南

本文详细介绍了Windows Server 2019整机备份与异机还原的实战操作,涵盖从虚拟机到物理机的完整迁移流程。通过环境准备、备份策略设计、具体操作步骤及迁移后优化等内容,帮助用户实现系统环境的无缝迁移,特别适用于服务器硬件升级、数据中心迁移等场景。

weixin_30555125的博客 133

华为AC6005-8升级记录

无线控制器忽然菪机,重启失败,SYS信号灯快闪,表示系统启动中,通过超级终端(连接线见步骤四)查看console输出信息,关键是这几句有问题: MMC : sd_send_op_cond: Timed out Card did not respond to voltage select! Not Exist! SD : sd_send_op_cond: Timed out Card d...

高彬的专栏 6488

Arduino Uno R3开发板系列学习教程(番外篇:USB驱动安装与疑难排解)

本文详细介绍了Arduino Uno R3开发板USB驱动安装与疑难排解的完整指南,特别针对国产克隆版常见的CH340驱动问题提供解决方案。从识别开发板类型到Windows/Mac系统驱动安装步骤,再到常见问题排查与高级排错技巧,帮助开发者快速解决连接问题,确保程序烧录顺利进行。

weixin_29182481的博客 582

大数据分析案例-基于决策树算法构建信用卡违约预测模型

本项目旨在使用机器学习等算法构建信用卡违约预测模型,主要应用在金融相关领域,根据用户以往的行为数据来预测是否会违约,有利于商业银行防范和化解信用卡风险,完善信用卡违约风险管理工作。本次实验通过探索性分析以及使用决策树构建信用卡违约模型,得出以下结论:1.可透支金额主要集中在0~200000之间。2.性别对于可透支金额的影响较小。3.受教育程度和婚姻状况对可透支金额的影响较大。4.决策树模型的准确率为0.88,模型效果还有待提高。

m0_64336780的博客 7574

Card did not respond to voltage select!

原因 默认在mmc 0 (SD卡)切换分区到emmc分区 已解决。

2201_75345766的博客 1976

《电磁兼容设计》专栏说明

本专栏自2024年1月起开始更新,仅设此一个电磁兼容相关知识专栏,并将一直持续更新下去,无期限

linkking27的博客 791

AM335x(TQ335x)学习笔记——Nand&&网卡驱动移植

移植完成声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍。介绍之前先感慨一下:TI的维护的内核真的很健壮,DTS真的很强大。

girlkoo的专栏 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

AM335x(TQ335x)学习笔记——Nand&&网卡驱动移植

移植完毕声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍。介绍之前先感慨一下:TI的维护的内核真的非常健壮,DTS真的非常强大。 1. Nand驱动移植 阅读TQ335x的原理图可知,TQ335x的Nand连接到了GPMC上,且与DTS中默认的配置吻合,...

weixin_30588729的博客 256

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

AM335x(TQ335x)学习笔记——挂载Ramdisk 分类: T...

上篇文章中我们已经能够通过u-boot启动内核了,但是没有能够启动成功,从内核的log中可以看出,内核启动失败的原因是没有挂载到root文件系统,本文将使用busybox制作根文件系统并打包成ramdisk供u-boot启动内核使用。(1)制作根文件系统使用busybox构建根文件系统的步骤可以参考本博客的另外一篇文章,该文章链接如下:S5PV210(TQ210)学习笔记——内核移植...

weixin_30470857的博客 181

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用命令ext4load mmc 1:1 时,u-boot返回Card did not respond to voltage select

保存变量,重启后,u-boot停在 Card did not respond to voltage select,不能加载内核。1:1 ->表示mmc1的第一个分区,mmc1代表的是外接SD卡,但我用的板子使用的是emmc。

qq_45920080的博客 1052

Saving Environment to FAT... Card did not respond to voltage select!

mmc 1:1说明使用的是EMMC的第1分区,也就是说我想使用SD卡,但在后续板级初始化时,系统会更改MMC,而默认使用的是EMMC,所以需要将其更改SD卡。因为板子是自己设计的,只留了SD卡,没有EMMC,所以刚开始以为是虚焊等硬件问题,但进一步分析,既然都到这一步了,SD卡肯定是能正常使用的。发现它确实被默认配置为EMMC启动,所以这里将1改为0,重新编译,orangepi和自己设计的板子均正常运行。查看源码发现这与环境变量有关(读不到MAC地址),进一步坐实了MMC的问题。

qq_45668408的博客 1560

【HI—SDK】-- Uboot调试

hisilicon # help ? - alias for 'help' base - print or set address offset bootm - boot application image from memory bootp - boot image via network using BOOTP/TFTP protocol bootss - boo...

好习惯成就伟大 2900

NXP i.MX6 优化linux系统启动时间

项目场景: 在眺望电子TW-IMX6DL-EVM开发板上优化linux系统启动时间。 编译环境及开发包: 主机:ubuntu18.04 交叉编译器:arm-linux-gnueabihf-gcc QT5.12.8:qt-everywhere-opensource-src-5.12.8 开发板:TW-IMX6DL-EVM Linux:Linux-4.1.15 注意:本文章的所有命令涉及到的路径均为眺望电子官方环境路径,需根据自身实际环境改变。本文所演示的平台来自于眺望电子 iMX6 ARM嵌入式平台,这是一

眺望电子_嵌入式技术分享专区 1229
上一篇: TQ335x开发板U-boot2015.07移植
下一篇: Linux下TI omap芯片 MUX 配置分析(以AM335X芯片为例)
stephen_kl
博客等级 码龄21年 436粉丝 54原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值