# BSP内核
## BSP内核剥离
BSP内核对摄像头驱动支持较好,所以在摄像头应用中有必要使用BSP内核。
官方SDK中camdriod与lichee linux内核绑定,而camdriod比较庞大,所以我们只需抽取lichee linux内核,而抛弃camdriod代码。
单独使用lichee linux的方法是:(构建走读见本节附录)
1. 解压buildroot/dl/gcc-linarno.tar.gz 到lichee/out/sun8iw8p1/linux/common/buildroot/external-toolchain,并加入环境变量(这步其实在下一步里包含了)
2. 执行build_tiger-cdr.sh
编译成功后,会显示:
~~~
Image Name: Linux-3.4.39
Created: Thu Oct 5 03:05:06 2017
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2275408 Bytes = 2222.08 kB = 2.17 MB
Load Address: 40008000
Entry Point: 40008000
Image arch/arm/boot/uImage is ready
'arch/arm/boot/Image' -> 'output/bImage'
'arch/arm/boot/uImage' -> 'output/uImage'
'arch/arm/boot/zImage' -> 'output/zImage'
Building modules
compile Kernel successful
~~~
主线uboot启动bsp内核使用uimage。
## BSP内核配置
BSP内核源码在lichee/linux-3.4下。
通过make ARCH=arm menuconfig来配置内核。
我们可以使能摄像头需要修改的一些内核配置:
使能USB摄像头驱动:
~~~
-> Device Drivers
x -> Multimedia support (MEDIA_SUPPORT [=y])
x -> Video capture adapters (VIDEO_CAPTURE_DRIVERS [=y])
x -> V4L USB devices (V4L_USB_DRIVERS [=y])
x -><M> USB Video Class (UVC) CONFIG_USB_VIDEO_CLASS
~~~
使能DVP/MIPI摄像头
~~~
-> Device Drivers
x -> Multimedia support (MEDIA_SUPPORT [=y])
x -> Video capture adapters (VIDEO_CAPTURE_DRIVERS [=y])
x -> V4L platform devices (V4L_PLATFORM_DRIVERS [=y])
x -> SoC camera support (SOC_CAMERA [=y])
x x <M> ov2640 camera support
x x <M> ov5647 camera support
x x <M> sunxi video front end (camera and etc)driver
x x <M> v4l2 driver for SUNXI
<*> sunxi video encoder and decoder support
~~~
由于camdriod原始的内核配置是为了在spi nor flash上运行而配置的,没有ext4支持,所以需要额外添加ext4支持:
~~~
<*> The Extended 4 (ext4) filesystem
x x [*] Use ext4 for ext2/ext3 file systems (NEW)
x x [*] Ext4 extended attributes (NEW)
x x [ ] Ext4 POSIX Access Control Lists (NEW)
x x [ ] Ext4 Security Labels (NEW)
x x [ ] EXT4 debugging support (NEW)
x x [ ] JBD2 (ext4) debugging support (NEW)
~~~
另外还要加上CONFIG_LBDAF(大文件支持,否则无法挂载文件系统)
~~~
-> Enable the block layer (BLOCK [=y])
[*] Support for large (2TB+) block devices and files
~~~
再加上CGROUPS支持:
~~~
-> General setup
[*] Control Group support --->
~~~
如果在文件系统(如debian)中使用了SWAP等特性,则还需要在内核中开启SWAP。
debian下还需要开启 FHANDLE 特性,否则会出现以下错误
~~~
A start job is running for dev-ttyS0.device
timeout
~~~
如果需要使用wifi功能,则还需要勾选RTL8723BS的支持(注意需要选择模块方式),和AW_RF_PM选项。
以及下节所说的fex修改。
## uboot启动BSP内核
使用主线uboot启动BSP内核,需要修改下启动脚本,放入BSP内核需要的script.bin配置文件(相当于主线linux的dtb)
修改boot.cmd:
~~~
setenv bootargs console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw
setenv bootm_boot_mode sec
setenv machid 1029
load mmc 0:1 0x41000000 zImage
load mmc 0:1 0x41d00000 script.bin
bootz 0x41000000
~~~
重新生成boot.scr:
`mkimage -C none -A arm -T script -d boot.cmd boot.scr`
将boot.scr放入第一分区。
再配置生成script.bin.
复制一份lichee/tools/pack/chips/sun8iw8p1/configs/tiger-cdr/sys_config.fex
修改其中的摄像头配置:
首先修改SD卡检测策略,设置为不检测,默认插入
`sdc_detmode=3`
使能RTL8723bs无线网卡的话,需要使能mmc1,也设置为不检测sd卡。
保存,并使用fex2bin sys_config.fex script.bin 生成script.bin文件。
将script.bin也放入第一分区。
然后需要配置uboot,取消**IMAGE_ENABLE_OF_LIBFDT**宏定义
再将前面编译的zImage放入第一分区。
此时就可以使用主线Uboot启动bsp内核了。
## 附录:BSP 内核构建走读
使用BSP内核的话,需要使用官方sdk编译camdriod并从中取出uImage。
鉴于camdriod较大,所以我们先简单走读下camdriod中对lichee的构建过程,扣出这部分内容。
camdriod的构建脚本:
~~~
#!/bin/bash
source build/envsetup.sh &&
lunch &&
mklichee &&
extract-bsp &&
make -j8 &&
pack
~~~
source build/envsetup.sh 这里是include各种环境变量,比如就添加了tiger_cdr-eng选项,这里先不管它。
lunch就是选择目标板配置了,是在build/envsetup.sh中的函数。
接着就是关键的mklichee了,在device/softwinner/common/vendorsetup.sh里,深入看下:
首先是一堆常量定义,放这里备查
~~~
function set_environment()
{
LICHEE_CHIP="sun8iw8p1"
export CAMLINUX_BUILD_TOP=`pwd`
export DEVICE_DIR=$CAMLINUX_BUILD_TOP/device/softwinner
export TARGET_OUT=$CAMLINUX_BUILD_TOP/output
export OUT_DIR=$CAMLINUX_BUILD_TOP/out
export LICHEE_DIR=$CAMLINUX_BUILD_TOP/../lichee
export LICHEE_OUT_DIR=$LICHEE_DIR/out/sun8iw8p1/linux
export BR_ROOTFS_DIR=$TARGET_OUT/target
export LICHEE_BR_DIR=${LICHEE_DIR}/buildroot
export LICHEE_KERN_DIR=${LICHEE_DIR}/linux-3.4
export LINUXOUT_MODULE_DIR=$LICHEE_KERN_DIR/output/lib/modules/*/*
export LICHEE_KERN_OUTDIR=$LICHEE_KERN_DIR/output
export LICHEE_TOOLS_DIR=${LICHEE_DIR}/tools
export LICHEE_UBOOT_DIR=${LICHEE_DIR}/brandy/u-boot-2011.09
}
~~~
mklichee本体:
~~~
function mklichee()
{
mksetting #显示目前的配置信息
mk_info "build lichee ..."
mkbr && mkkernel
# mkbr && mkkernel && mkuboot
[ $? -ne 0 ] && return 1
return 0
}
~~~
mkbr是运行了 buildroot/scripts/build.sh buildroot linux sun8iw8p1
gcc-linaro.tar.bz2
~~~
function mkbr()
{
mk_info "build buildroot ..."
local build_script
build_script="scripts/build.sh"
LICHEE_PLATFORM="linux"
(cd ${LICHEE_BR_DIR} && [ -x ${build_script} ] && ./${build_script} "buildroot" ${LICHEE_PLATFORM} ${LICHEE_CHIP})
[ $? -ne 0 ] && mk_error "build buildroot Failed" && return 1
mk_info "build buildroot OK."
}
~~~
build.sh写着:
~~~
if [ "x${LICHEE_PLATFORM}" = "xlinux" ] ; then
build_buildroot
export PATH=${LICHEE_BR_OUT}/external-toolchain/bin:$PATH
build_external
else
build_toolchain
~~~
LICHEE_PLATFORM并没有被传入,实际执行的是build_toolchain:
~~~
build_toolchain()
{
local tooldir="${LICHEE_BR_OUT}/external-toolchain"
mkdir -p ${tooldir}
if [ -f ${tooldir}/.installed ] ; then
printf "external toolchain has been installed\n"
else
printf "installing external toolchain\n"
printf "please wait for a few minutes ...\n"
tar --strip-components=1 \
-jxf ${LICHEE_BR_DIR}/dl/gcc-linaro.tar.bz2 \
-C ${tooldir}
[ $? -eq 0 ] && touch ${tooldir}/.installed
fi
export PATH=${tooldir}/bin:${PATH}
}
~~~
这里LICHEE_BR_OUT是lichee/out/sun8iw8p1/linux/common/buildroot
LICHEE_BR_DIR是lichee/buildroot, 需要先导入。
这里使用的linaro版本比较老。注意如果使用较新的gcc反而会出错。
这里就是解压了linaro-gcc,并加入到环境变量。
mkbr看完了,接下来看mkkernel。
function mkkernel()
{
local platformdef=$tdevice
if [ ! -n $tdevice ]; then
echo "Please lunch device"
return 1
fi
echo "Make the kernel"
echo "platformdef="${platformdef}
(cd ${LICHEE_KERN_DIR}/; ./build.sh -p ${platformdef})
[ $? -ne 0 ] && mk_error "build mkkernel fail" && return 1
echo "Make the kernel finish"
return 0
}
执行的是lichee/linux-3.4/build.sh, 跟下去是执行了:
./scripts/build_${PLATFORM}.sh all
看script目录下,有:
~~~
build_crane-cdr.sh
build_crane-ipc.sh
build_crane-sdv.sh
build_crane-standard.sh
build_rootfs.sh
build.sh
build_sun6i.sh
build_sun8iw8p1.sh
build_tiger-cdr.sh
build_tiger-ipc.sh
build_tiger-standard.sh
~~~
就是代表的可以构建的板子型号。
我们实际编译的时候只需要执行build_tiger-cdr.sh 即可。
综上所述,需要剥离camdriod所用的lichee内核,只需要:
1. 解压buildroot/dl/gcc-linarno.tar.gz 到lichee/out/sun8iw8p1/linux/common/buildroot/external-toolchain,并加入环境变量(这步其实在下一步里包含了)
2. 执行build_tiger-cdr.sh
## 启动信息
~~~
Starting kernel ...
[sun8i_fixup]: From boot, get meminfo:
Start: 0x40000000
Size: 64MB
ion_carveout reserve: 28m@0 28m@0
ion_reserve_common: ion reserve: [0x42400000, 0x44000000]!
[ 0.000000] Booting Linux on physical CPU 0
[ 0.000000] Linux version 3.4.39 (root@bf756b445919) (gcc version 4.6.3 20120201 (prerelease) (crosstool-NG linaro-1.13.1-2012.02-20120222 - Linaro GCC 2012.02) ) #29 Wed Nov 29 10:53:16 UTC 2017
[ 0.000000] bootconsole [earlycon0] enabled
[ 0.000000] Initialized persistent memory from 41d20800-41d307ff
[ 0.000000] Kernel command line: console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw
[ 0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
[ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Memory: 64MB = 64MB total
[ 0.000000] Memory: 29312k/29312k available, 36224k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xc4800000 - 0xff000000 ( 936 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
[ 0.000000] .text : 0xc0008000 - 0xc050d000 (5140 kB)
[ 0.000000] .init : 0xc050d000 - 0xc0530000 ( 140 kB)
[ 0.000000] .data : 0xc0530000 - 0xc05ab500 ( 494 kB)
[ 0.000000] .bss : 0xc05ab524 - 0xc068c28c ( 900 kB)
[ 0.000000] NR_IRQS:544
[ 0.000000] Architected local timer running at 24.00MHz.
[ 0.000000] Switching to timer-based delay loop
[ 0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
[ 0.000000] Console: colour dummy device 80x30
[ 0.014545] Calibrating delay loop (skipped), value calculated using timer frequency.. 4800.00 BogoMIPS (lpj=24000000)
[ 0.022936] pid_max: default: 32768 minimum: 301
[ 0.027778] Mount-cache hash table entries: 512
[ 0.030637] CPU: Testing write buffer coherency: ok
[ 0.035150] Setting up static identity map for 0x40396048 - 0x403960a0
[ 0.040773] devtmpfs: initialized
[ 0.045346] pinctrl core: initialized pinctrl subsystem
[ 0.049168] NET: Registered protocol family 16
[ 0.050362] DMA: preallocated 128 KiB pool for atomic coherent allocations
[ 0.056956] script_sysfs_init success
[ 0.060951] gpiochip_add: registered GPIOs 0 to 223 on device: sunxi-pinctrl
[ 0.068164] sunxi-pinctrl sunxi-pinctrl: initialized sunXi PIO driver
[ 0.070438] gpiochip_add: registered GPIOs 1024 to 1031 on device: axp-pinctrl
[ 0.078235] persistent_ram: uncorrectable error in header
[ 0.080020] persistent_ram: no valid data in buffer (sig = 0x75371537)
[ 0.091722] console [ram-1] enabled
[ 0.092266] Not Found clk pll_isp in script
[ 0.094113] Not Found clk pll_video in script
[ 0.098719] Not Found clk pll_ve in script
[ 0.100012] Not Found clk pll_periph0 in script
[ 0.104666] Not Found clk pll_de in script
[ 0.113517] bio: create slab <bio-0> at 0
[ 0.113966] pwm module init!
[ 0.118375] SCSI subsystem initialized
[ 0.120028] usbcore: registered new interface driver usbfs
[ 0.125313] usbcore: registered new interface driver hub
[ 0.130165] usbcore: registered new device driver usb
[ 0.135149] twi_chan_cfg()340 - [twi0] has no twi_regulator.
[ 0.140018] twi_chan_cfg()340 - [twi1] has no twi_regulator.
[ 0.146123] Linux video capture interface: v2.00
[ 0.150126] gpiochip_add: gpios 1024..1028 (axp_pin) failed to register
[ 0.156916] Advanced Linux Sound Architecture Driver Version 1.0.25.
[ 0.160794] Switching to clocksource arch_sys_counter
[ 0.171015] NET: Registered protocol family 2
[ 0.171466] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.177306] TCP established hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.184207] TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.190440] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.196921] TCP: reno registered
[ 0.200126] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.206122] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.212647] NET: Registered protocol family 1
[ 0.217253] standby_mode = 1.
[ 0.219870] wakeup src cnt is : 3.
[ 0.223491] pmu1_enable = 0x0.
[ 0.226639] config_pmux_para: script_parser_fetch err.
[ 0.232034] pmu2_enable = 0x0.
[ 0.235126] add_sys_pwr_dm: get ldo name failed
[ 0.239818] add_sys_pwr_dm: get ldo name failed
[ 0.244317] add_sys_pwr_dm: get ldo name failed
[ 0.248900] add_sys_pwr_dm: get ldo name failed
[ 0.253610] add_sys_pwr_dm: get ldo name failed
[ 0.258090] add_sys_pwr_dm: get ldo name failed
[ 0.262796] add_sys_pwr_dm: get ldo name failed
[ 0.267274] add_sys_pwr_dm: get ldo name failed
[ 0.271877] add_sys_pwr_dm: get ldo name failed
[ 0.276566] add_sys_pwr_dm: get ldo name failed
[ 0.281061] after inited: sys_mask config = 0x0.
[ 0.285927] dynamic_standby enalbe = 0x0.
[ 0.290049] sunxi_reg_init enter
[ 0.295521] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.299326] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
[ 0.306584] msgmni has been set to 57
[ 0.311246] io scheduler noop registered
[ 0.313995] io scheduler deadline registered
[ 0.318410] io scheduler cfq registered (default)
[ 0.323712] [DISP]disp_module_init
[ 0.326990] cmdline,disp=
[ 0.329889] [DISP] disp_get_rotation_sw,line:68:disp 0 out of range? g_rot_sw=0
[ 0.336609] [DISP] disp_init_connections,line:289:NULL pointer: 0, 0
[ 0.344754] [DISP] Fb_map_kernel_logo,line:924:Fb_map_kernel_logo failed!
[ 0.352381] [DISP] disp_sys_power_enable,line:387:some error happen, fail to get regulator
[ 0.358275] [DISP] disp_sys_gpio_set_value,line:374:OSAL_GPIO_DevWRITE_ONEPIN_DATA, hdl is NULL
[ 0.367297] [DISP]disp_module_init finish
[ 0.371458] sw_uart_get_devinfo()1503 - uart0 has no uart_regulator.
[ 0.378007] uart0: ttyS0 at MMIO 0x1c28000 (irq = 32) is a SUNXI
[ 0.383640] sw_uart_pm()890 - uart0 clk is already enable
[ 0.389159] sw_console_se 0.397781] console [ttyS0] enabled, bootconsole disabled
[ 0.397781] console [ttyS0] enabled, bootconsole disabled
[ 0.405808] sunxi_spi_chan_cfg()1376 - [spi-0] has no spi_regulator.
[ 0.417215] spi spi0: master is unqueued, this is deprecated
[ 0.423980] m25p_probe()988 - Use the Dual Mode Read.
[ 0.429818] m25p80 spi0.0: found W25q128, expected at25df641
[ 0.436364] m25p80 spi0.0: W25q128 (16384 Kbytes)
[ 0.442069] Creating 4 MTD partitions on "spi0.0":
[ 0.447623] 0x000000000000-0x000000100000 : "uboot"
[ 0.454335] 0x000000100000-0x000000110000 : "script"
[ 0.461007] 0x000000110000-0x000000510000 : "kernel"
[ 0.467737] 0x000000510000-0x000001000000 : "rootfs"
[ 0.474560] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.502308] sunxi-ehci sunxi-ehci.1: SW USB2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.511538] sunxi-ehci sunxi-ehci.1: new USB bus registered, assigned bus number 1
[ 0.520232] sunxi-ehci sunxi-ehci.1: irq 104, io mem 0xf1c1a000
[ 0.540038] sunxi-ehci sunxi-ehci.1: USB 0.0 started, EHCI 1.00
[ 0.547565] hub 1-0:1.0: USB hub found
[ 0.552045] hub 1-0:1.0: 1 port detected
[ 0.557035] sunxi-ehci sunxi-ehci.1: remove, state 1
[ 0.562716] usb usb1: USB disconnect, device number 1
[ 0.570093] [DISP] disp_lcd_pwm_enable,line:1021:pwm device hdl is NULL
[ 0.577820] sunxi-ehci sunxi-ehci.1: USB bus 1 deregistered
[ 0.594381] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 0.621611] sunxi-ohci sunxi-ohci.1: SW USB2.0 'Open' Host Controller (OHCI) Driver
[ 0.630292] sunxi-ohci sunxi-ohci.1: new USB bus registered, assigned bus number 1
[ 0.638963] sunxi-ohci sunxi-ohci.1: irq 105, io mem 0xf1c1a400
[ 0.704775] hub 1-0:1.0: USB hub found
[ 0.709188] hub 1-0:1.0: 1 port detected
[ 0.714159] sunxi-ohci sunxi-ohci.1: remove, state 1
[ 0.719942] usb usb1: USB disconnect, device number 1
[ 0.726383] sunxi-ohci sunxi-ohci.1: USB bus 1 deregistered
[ 0.742856] Initializing USB Mass Storage driver...
[ 0.748591] usbcore: registered new interface driver usb-storage
[ 0.755417] USB Mass Storage support registered.
[ 0.761162] file system registered
[ 0.766892] android_usb gadget: Mass Storage Function, version: 2009/09/11
[ 0.774821] android_usb gadget: Number of LUNs=1
[ 0.780100] lun0: LUN: removable file: (no medium)
[ 0.786312] android_usb gadget: android_usb ready
[ 0.791843] sunxikbd_script_init: key para not found, used default para.
[ 0.800884] sunxi-rtc sunxi-rtc: rtc core: registered sunxi-rtc as rtc0
[ 0.808628] [VFE]cci probe start cci_sel = 0!
[ 0.813793] [VFE]cci probe end cci_sel = 0!
[ 0.818593] [VFE]cci_init end
[ 0.822038] [VFE]Welcome to Video Front End driver
[ 0.827986] [VFE]pdev->id = 0
[ 0.831435] [VFE]dev->mipi_sel = 0
[ 0.835324] [VFE]dev->vip_sel = 0
[ 0.839114] [VFE]dev->isp_sel = 0
[ 0.849164] [VFE_WARN]vfe vpu clock is null
[ 0.860599] [VFE]pdev->id = 1
[ 0.864021] [VFE]dev->mipi_sel = 1
[ 0.868014] [VFE]dev->vip_sel = 1
[ 0.871864] [VFE]dev->isp_sel = 0
[ 0.875672] [VFE]probe_work_handle start!
[ 0.880358] [VFE]..........................vfe clk open!.......................
[ 0.889010] [VFE]v4l2 subdev register input_num = 0
[ 0.894683] [VFE_WARN]vfe vpu clock is null
[ 0.899688] [VFE_ERR]vip1 request pinctrl handle for device [csi1] failed!
[ 0.907603] [VFE_ERR]get regulator csi_avdd error!
[ 0.913056] [VFE_ERR]vfe_device_regulator_get error at input_num = 0
[ 0.920482] [VFE]vfe_init end
[ 0.924426] platform reg-20-cs-dcdc2: Driver reg-20-cs-dcdc2 requests probe deferral
[ 0.933586] [VFE]V4L2 device registered as video0
[ 0.938969] [VFE]..........................vfe clk close!.......................
[ 0.947676] platform reg-20-cs-dcdc3: Driver reg-20-cs-dcdc3 requests probe deferral
[ 0.956440] [VFE]probe_work_handle end!
[ 0.960938] [VFE]probe_work_handle start!
[ 0.965515] [VFE]..........................vfe clk open!.......................
[ 0.974033] platform reg-20-cs-ldo1: Driver reg-20-cs-ldo1 requests probe deferral
[ 0.982739] platform reg-20-cs-ldo2: Driver reg-20-cs-ldo2 requests probe deferral
[ 0.991682] [VFE]v4l2 subdev register input_num = 0
[ 0.997227] [VFE]vfe sensor detect start! input_num = 0
[ 1.003274] [VFE]Find sensor name is "ov2640", i2c address is 60, type is "YUV" !
[ 1.011824] [VFE]Sub device register "ov2640" i2c_addr = 0x60 start!
[ 1.018998] [VFE_ERR]Error registering v4l2 subdevice No such device!
[ 1.026388] [VFE_ERR]vfe sensor register check error at input_num = 0
[ 1.033813] platform reg-20-cs-ldo3: Driver reg-20-cs-ldo3 requests probe deferral
[ 1.042602] platform reg-20-cs-ldo4: Driver reg-20-cs-ldo4 requests probe deferral
[ 1.051390] platform reg-20-cs-ldoio0: Driver reg-20-cs-ldoio0 requests probe deferral
[ 1.060339] sunxi_wdt_init_module: sunxi WatchDog Timer Driver v1.0
[ 1.067734] sunxi_wdt_probe: devm_ioremap return wdt_reg 0xf1c20ca0, res->start 0x01c20ca0, res->end 0x01c20cbf
[ 1.079242] [VFE]V4L2 device registered as video1
[ 1.084960] [VFE]..........................vfe clk close!.......................
[ 1.093623] sunxi_wdt_probe: initialized (g_timeout=16s, g_nowayout=0)
[ 1.101032] wdt_enable, write reg 0xf1c20cb8 val 0x00000000
[ 1.107445] wdt_set_tmout, write 0x000000b0 to mode reg 0xf1c20cb8, actual timeout 16 sec
[ 1.116779] [VFE]probe_work_handle end!
[ 1.127839] sunxi_leds_fetch_sysconfig_para leds is not used in config
[ 1.135343] =========script_get_err============
[ 1.140895] usbcore: registered new interface driver usbhid
[ 1.147192] usbhid: USB HID core driver
[ 1.152295] ashmem: initialized
[ 1.156010] logger: created 256K log 'log_main'
[ 1.161344] logger: created 32K log 'log_events'
[ 1.166840] logger: created 32K log 'log_radio'
[ 1.173330] logger: created 32K log 'log_system'
[ 1.181135] *******************Try sdio*******************
[ 1.188578] script_get_item return type err, consider it no ldo
[ 1.196448] asoc: sndcodec <-> sunxi-codec mapping ok
[ 1.203087] *******************Try sd *******************
[ 1.210630] TCP: cubic registered
[ 1.214424] NET: Registered protocol family 17
[ 1.219580] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[ 1.228464] ThumbEE CPU extension supported.
[ 1.233373] Registering SWP/SWPB emulation handler
[ 1.243467] platform reg-20-cs-ldoio0: Driver reg-20-cs-ldoio0 requests probe deferral
[ 1.252523] platform reg-20-cs-ldo4: Driver reg-20-cs-ldo4 requests probe deferral
[ 1.261210] platform reg-20-cs-ldo3: Driver reg-20-cs-ldo3 requests probe deferral
[ 1.269839] platform reg-20-cs-ldo2: Driver reg-20-cs-ldo2 requests probe deferral
[ 1.278387] platform reg-20-cs-ldo1: Driver reg-20-cs-ldo1 requests probe deferral
[ 1.287040] platform reg-20-cs-dcdc3: Driver reg-20-cs-dcdc3 requests probe deferral
[ 1.295877] platform reg-20-cs-dcdc2: Driver reg-20-cs-dcdc2 requests probe deferral
[ 1.304676] sunxi-rtc sunxi-rtc: setting system clock to 1970-01-01 00:52:23 UTC (3143)
[ 1.315547] ALSA device list:
[ 1.318966] #0: audiocodec
[ 1.322763] Waiting for root device /dev/mmcblk0p2...
[ 1.330265] mmc0: new high speed SDHC card at address 0007
[ 1.336986] mmcblk0: mmc0:0007 SD16G 14.4 GiB
[ 1.344244] mmcblk0: p1 p2
[ 1.348240] mmcblk mmc0:0007: Card claimed for testing.
[ 1.354284] mmc0:0007: SD16G 14.4 GiB
[ 1.358650] platform reg-20-cs-dcdc2: Driver reg-20-cs-dcdc2 requests probe deferral
[ 1.367505] *******************sd init ok*******************
[ 1.373971] platform reg-20-cs-dcdc3: Driver reg-20-cs-dcdc3 requests probe deferral
[ 1.382857] platform reg-20-cs-ldo1: Driver reg-20-cs-ldo1 requests probe deferral
[ 1.392791] platform reg-20-cs-ldo2: Driver reg-20-cs-ldo2 requests probe deferral
[ 1.401342] platform reg-20-cs-ldo3: Driver reg-20-cs-ldo3 requests probe deferral
[ 1.409966] platform reg-20-cs-ldo4: Driver reg-20-cs-ldo4 requests probe deferral
[ 1.418782] platform reg-20-cs-ldoio0: Driver reg-20-cs-ldoio0 requests probe deferral
[ 1.430110] fs_names=/dev/root
[ 1.433712] fs_name=ext3
[ 1.439951] EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to feature incompatibilities
[ 1.451442] err=-22
[ 1.453911] fs_name=ext2
[ 1.456821] *******************Try sdio*******************
[ 1.465105] EXT4-fs (mmcblk0p2): couldn't mount as ext2 due to feature incompatibilities
[ 1.474453] err=-22
[ 1.476890] fs_name=ext4
[ 1.489053] mmc1: new high speed SDIO card at address 0001
[ 1.495719] *******************sdio init ok*******************
[ 2.726144] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 2.735371] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 2.742251] err=0
[ 2.747567] devtmpfs: mounted
[ 2.751204] Freeing init memory: 140K
[ 2.930884] systemd[1]: systemd 215 running in system mode. (+PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR)
[ 2.946338] systemd[1]: Detected architecture 'arm'.
Welcome to Debian GNU/Linux 8 (jessie)!
[ 3.001376] systemd[1]: Failed to insert module 'autofs4'
[ 3.007740] systemd[1]: Failed to insert module 'ipv6'
[ 3.016049] systemd[1]: Set hostname to <LicheePi>.
[ 3.386763] systemd[1]: Cannot add dependency job for unit dbus.socket, ignoring: Unit dbus.socket failed to load: No such file or directory.
[ 3.401457] systemd[1]: Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service failed to load: No such file or directory.
[ 3.420884] systemd[1]: Expecting device dev-ttyS0.device...
Expecting device dev-ttyS0.device...
[ 3.450242] systemd[1]: Starting Forward Password Requests to Wall Directory Watch.
[ 3.459321] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ 3.468062] systemd[1]: Starting Remote File Systems (Pre).
[ OK ] Reached target Remote File Systems (Pre).
[ 3.490182] systemd[1]: Reached target Remote File Systems (Pre).
[ 3.497335] systemd[1]: Starting Dispatch Password Requests to Console Directory Watch.
[ 3.506789] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 3.515820] systemd[1]: Starting Paths.
[ OK ] Reached target Paths.
[ 3.540183] systemd[1]: Reached target Paths.
[ 3.545244] systemd[1]: Starting Encrypted Volumes.
[ OK ] Reached target Encrypted Volumes.
[ 3.570180] systemd[1]: Reached target Encrypted Volumes.
[ 3.576595] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 3.587363] systemd[1]: Starting Swap.
[ OK ] Reached target Swap.
[ 3.610166] systemd[1]: Reached target Swap.
[ 3.615133] systemd[1]: Expecting device dev-mmcblk0p1.device...
Expecting device dev-mmcblk0p1.device...
[ 3.640202] systemd[1]: Starting Root Slice.
[ OK ] Created slice Root Slice.
[ 3.660178] systemd[1]: Created slice Root Slice.
[ 3.665716] systemd[1]: Starting /dev/initctl Compatibility Named Pipe.
[ OK ] Listening on /dev/initctl Compatibility Named Pipe.
[ 3.690188] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[ 3.698235] systemd[1]: Starting Delayed Shutdown Socket.
[ OK ] Listening on Delayed Shutdown Socket.
[ 3.720181] systemd[1]: Listening on Delayed Shutdown Socket.
[ 3.726873] systemd[1]: Starting Journal Socket (/dev/log).
[ OK ] Listening on Journal Socket (/dev/log).
[ 3.750183] systemd[1]: Listening on Journal Socket (/dev/log).
[ 3.757124] systemd[1]: Starting udev Control Socket.
[ OK ] Listening on udev Control Socket.
[ 3.780183] systemd[1]: Listening on udev Control Socket.
[ 3.786538] systemd[1]: Starting udev Kernel Socket.
[ OK ] Listening on udev Kernel Socket.
[ 3.810188] systemd[1]: Listening on udev Kernel Socket.
[ 3.816409] systemd[1]: Starting User and Session Slice.
[ OK ] Created slice User and Session Slice.
[ 3.840194] systemd[1]: Created slice User and Session Slice.
[ 3.846923] systemd[1]: Starting Journal Socket.
[ OK ] Listening on Journal Socket.
[ 3.870194] systemd[1]: Listening on Journal Socket.
[ 3.876115] systemd[1]: Starting Sockets.
[ OK ] Reached target Sockets.
[ 3.900178] systemd[1]: Reached target Sockets.
[ 3.905463] systemd[1]: Starting System Slice.
[ OK ] Created slice System Slice.
[ 3.930189] systemd[1]: Created slice System Slice.
[ 3.935980] systemd[1]: Started Create list of required static device nodes for the current kernel.
[ 3.946850] systemd[1]: Mounting Debug File System...
Mounting Debug File System...
[ 3.972002] systemd[1]: Mounted POSIX Message Queue File System.
[ 3.985664] systemd[1]: Starting Load Kernel Modules...
Starting Load Kernel Modules...
[ 4.016065] systemd[1]: Started Set Up Additional Binary Formats.
[ 4.024319] systemd[1]: Mounted Huge Pages File System.
[ 4.036274] systemd[1]: Starting udev Coldplug all Devices...
Starting udev Coldplug all Devices...
[ 4.062631] systemd[1]: Starting Create Static Device Nodes in /dev...
Starting Create Static Device Nodes in /dev...
[ 4.092537] systemd[1]: Starting system-getty.slice.
[ OK ] Created slice system-getty.slice.
[ 4.112748] systemd[1]: Created slice system-getty.slice.
[ 4.122317] systemd[1]: Starting system-serial\x2dgetty.slice.
[ OK ] Created slice system-serial\x2dgetty.slice.
[ 4.150268] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ 4.157615] systemd[1]: Started File System Check on Root Device.
[ 4.164807] systemd[1]: Starting Journal Service...
Starting Journal Service...
[ OK ] Started Journal Service.
[ 4.210299] systemd[1]: Started Journal Service.
[ OK ] Reached target Slices.
[ OK ] Mounted Debug File System.
[ OK ] Started Load Kernel Modules.
[ OK ] Started Create Static Device Nodes in /dev.
Starting udev Kernel Device Manager...
Starting Apply Kernel Variables...
[ OK ] Started udev Kernel Device Man[ 4.372555] systemd-udevd[69]: starting version 215
ager.
[ OK ] Started udev Coldplug all Devices.
[ OK ] Started Apply Kernel Variables.
Starting Copy rules generated while the root was ro...
Starting LSB: Set preliminary keymap...
[ OK ] Started Copy rules generated while the root was ro.
[ OK ] Started LSB: Set preliminary keymap.
Starting Remount Root and Kernel File Systems...
[ 4.640531] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[ OK ] Started Remount Root and Kernel File Systems.
[ OK ] Reached target Local File Systems (Pre).
Starting Load/Save Random Seed...
[ OK ] Reached target Sound Card.
[ OK ] Started Load/Save Random Seed.
[ 5.012110] [VFE]vfe_open
[ OK [ 5.043465] [VFE]vfe_open
] Found device /dev/mmcblk0p1.
[ 5.058511] [VFE]..........................vfe clk open!.......................
[ 5.082179] [VFE]..........................vfe clk open!.......................
[ OK ] Found device /dev/ttyS0.
[ 5.112320] [VFE]vfe_open ok
[ 5.115853] [VFE]vfe_close
[ 5.118958] [VFE]vfe select input flag = 0, s_input have not be used .
[ 5.126480] [VFE]..........................vfe clk close!.......................
[ 5.144821] [VFE]vfe_open ok
[ 5.148348] [VFE]vfe_close
[ 5.151598] [VFE]vfe select input flag = 0, s_input have not be used .
[ 5.158972] [VFE]..........................vfe clk close!.......................
Mounting /boot...
[ 5.224773] [VFE]vfe_close end
[ 5.282919] [VFE]vfe_close end
[ OK ] Mounted /boot.
[ OK ] Reached target Local File Systems.
Starting Create Volatile Files and Directories...
[ OK ] Reached target Remote File Systems.
Starting Trigger Flushing of Journal to Persistent Storage...
Starting LSB: Set console font and keymap...
Starting LSB: Raise network interfaces....
[ OK ] Started LSB: Set console font and keymap.
[ 5.519209] systemd-journald[65]: Received request to flush runtime journal from PID 1
[ OK ] Started Trigger Flushing of Journal to Persistent Storage.
[ OK ] Started Create Volatile Files and Directories.
Starting Update UTMP about System Boot/Shutdown...
[ OK ] Started Update UTMP about System Boot/Shutdown.
[ OK ] Started LSB: Raise network interfaces..
[ OK ] Reached target Network.
[ OK ] Reached target System Initialization.
[ OK ] Reached target Timers.
Starting Restore Sound Card State...
[ OK ] Reached target Basic System.
Starting Regular background program processing daemon...
[ OK ] Started Regular background program processing daemon.
Starting OpenBSD Secure Shell server...
[ OK ] Started OpenBSD Secure Shell server.
Starting /etc/rc.local Compatibility...
Starting Permit User Sessions...
Starting getty on tty2-tty6 if dbus and logind are not available...
[ OK ] Started Restore Sound Card State.
[ OK ] Started /etc/rc.local Compatibility.
[ OK ] Started Permit User Sessions.
Starting Getty on tty2...
[ OK ] Started Getty on tty2.
Starting Getty on tty1...
[ OK ] Started Getty on tty1.
Starting Serial Getty on ttyS0...
[ OK ] Started Serial Getty on ttyS0.
[ OK ] Started getty on tty2-tty6 if dbus and logind are not available.
Starting Getty on tty6...
[ OK ] Started Getty on tty6.
Starting Getty on tty5...
[ OK ] Started Getty on tty5.
Starting Getty on tty4...
[ OK ] Started Getty on tty4.
Starting Getty on tty3...
[ OK ] Started Getty on tty3.
[ OK ] Reached target Login Prompts.
[ OK ] Reached target Multi-User System.
[ OK ] Reached target Graphical Interface.
Starting Update UTMP about System Runlevel Changes...
[ OK ] Started Update UTMP about System Runlevel Changes.
Debian GNU/Linux 8 LicheePi ttyS0
LicheePi login: root
~~~
- 前言
- 荔枝派TODO任务领取
- linux使用小贴士
- 入门篇
- 板卡介绍
- 开箱指南
- 烧录启动系统
- 联网方法
- 镜像使用
- 镜像说明
- buildroot系统使用
- debian系统使用
- 外设操作
- 外设操作概览
- 低速外设
- GPIO
- GPIO模拟低速接口
- UART
- PWM
- I2C
- SPI
- 高速接口
- SDIO
- USB
- EtherNet
- DVP CSI
- MIPI CSI
- 模拟外设
- CODEC
- LRADC
- 常见设备驱动
- USB摄像头
- USB 3G/4G 网卡
- 舵机
- 开发篇
- UBOOT适配
- UBOOT编译
- UBOOT配置
- UBOOT配置屏幕分辨率
- UBOOT配置SPI启动
- Linux内核开发
- Linux内核编译
- BSP Linux内核编译.md
- Linux内核选项
- 外设驱动与设备树
- RTL8723BS驱动
- 根文件系统定制
- buildroot定制系统
- buildroot添加软件包
- openwrt定制系统
- emdebian定制系统
- camdriod开发
- camdriod编译
- 主线Uboot引导Camdriod
- 系统镜像打包
- XBOOT适配
- 荔枝运行XBOOT
- 应用篇
- 游戏机-基于EmulationStation
- 游戏机-gnuboy
- 语音识别-科大讯飞云
- GUI-QT5
- 语音识别-离线关键词识别
- 路由器-Lichee Zero
- 投稿文章
- 荔枝派Zero开箱指南
- Zero i2c oled使用指南
- zero SPI LCD使用指南
- Zero u-boot编译和使用指南
- TF WiFi使用方法
- Zero Ethernet使用指南
- Zero 移植Qt5.4.1
- ZeroSpiNorFlash启动系统制作指南
- Visio-uboot-sunxi流程
- lichee 编译踩坑记录(ilichee ZERO)
- lichee_zero_外设GPIO接口
- TF WIFI 小白编
- 从零开始LicheePi Zero的开发
- 认识Zero的硬件
- 搭建Zero的开发环境
- 主线Uboot
- 主线kernel
- BSP kernel
- BSP内核启动
- bsp内核的摄像头使用
- BSP内核中的保留内存
- uboot启动BSP内核常见错误
- BSP内核 FBTFT移植
- BSP内核启动错误及警告解决
- buildroot 根文件系统
- emdebian 根文件系统
- SPI Flash 系统编译
- sunxi-fel增加对16M 以上flash的支持
- overlayfs的使用
- jffs2系统挂载不上的常见原因
- JFFS2 文件系统简介
- uboot对spi flash的识别
- bsp内核的SPI flash启动
- Docker开发环境
- Docker 命令速查
- 基础ubuntu系统配置
- docker离线镜像
- Zero系统烧录
- dd镜像烧录
- 分区镜像烧录
- SPI Flash系统烧录
- 一键镜像烧录
- Zero外设把玩
- I2C操作
- PWM输出
- CODEC的使用
- 以太网使用指南
- GPIO操作
- 文件IO方式
- C语言接口(mmap)
- Python操作GPIO
- pinctrl-sunxi介绍
- UART操作
- 点屏
- 点屏之RGB屏
- 点屏之SPI屏 ili9341
- 点屏之SPI OLED
- 点屏之I2C OLED
- 点屏之SPI屏 ili9488
- 点屏之MCU屏
- 点屏之触摸屏驱动
- 点屏之simple-framebuffer
- 点屏之屏幕时序
- 时钟控制器CCM
- 摄像头
- BSP DVP摄像头
- BSP MIPI 摄像头
- 主线DVP摄像头
- 主线 MIPI摄像头
- SPI 操作
- 应用层开发
- 开机自启动
- Segment Fault调试
- Zero通过OTG共享PC网络
- USB摄像头使用
- 基于QT的GUI开发
- 移植tslib
- 移植QT5.9.1
- 移植QT4.8.7
- QtCreator使用
- Qt5.x移植到Qt4.8
- Qt字体相关
- Qt移植总结
- Qt裁剪
- Qt去除鼠标指针显示
- zero_imager使用
- 驱动开发
- 设备树简介
- GPU/DRM 显示驱动
- sys下设备树查看
- atmel触摸屏驱动分析
- atmel触摸屏中断改轮询
- uboot下gpio操作
- helloworld驱动编译演示
- FBTFT分析
- 内核模块静态加载的顺序
- SPI驱动分析
- SPI 驱动编写
- Uboot开发
- 开机logo
- 看门狗的使用
- 关于系统reboot
- 内核printk等级设置