# 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等級設置