本部落格以xunlong orangepi zero為例,執行最新linux 4.11.0-rc4核心。
# 轉殖u-boot倉庫
git clone git:
# 編譯配置
make orangepi_zero_defconfig
# 交叉編譯
make v=s -j8 arch=arm cross_compile=arm-linux-gnueabihf-
編譯完成在原始碼根目錄出現目標檔案:
# 轉殖kernel倉庫
git clone git:
/scm/linux
/kernel/git
/torvalds/linux.git
# 編譯配置
make arch=arm sunxi_defconfig
# 交叉編譯
make v=s -j8 arch=arm cross_compile=arm-linux-gnueabihf-
編譯完成在原始碼目錄出現目標檔案:
1\ busybox
# 轉殖busybox倉庫
git clone git:
# 編譯配置
make menuconfig
[*] build busybox as a static binary(arm-linux-gnueabihf-) cross compiler prefix
(./_install) busybox installation prefix
# 編譯
make
cd _install/
chmod 4755 bin/busybox
接下來的步驟都基於這個_install資料夾。
2\ etc/inittab
建立etc/inittab檔案:
# /etc/inittab
::sysinit:/etc/init.d/rcs
ttys0::sysinit:/bin/ash
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
3\ etc/fstab
建立etc/fstab檔案:
# device mount-point type options dump fsck order
proc /proc
proc defaults 0
0tmpfs /tmp tmpfs defaults 0
0
4\ etc/init.d/rcs
建立etc/init.d/rcs檔案:
#!/bin/sh
mount -a
5\ 建立裝置節點
在dev目錄下建立基本的裝置節點:
mknod -m
0666 console c 5
1mknod -m
0666
null c 1
3mknod ttys0 c 4
64
將sd卡分割槽,第乙個分割槽放zimage和dtb檔案,第二個分割槽作為rootfs掛載:
#!/bin/sh
card=/dev/mmcblk0
cardroot=$$2
# sd卡格式化
dd if=/dev/zero of=$ bs=1m count=1
# sd卡分割槽
blockdev --rereadpt $
cat <$
1m,16m,c
,,leot
# 格式化分割槽
mkfs.vfat $$1
mkfs.ext4 $$2
# 刷入u-boot
dd if=u-boot-sunxi-with-spl.bin of=$ bs=1024 seek=8
# 寫入zimage和dtb檔案
mount $
$1 /mnt/
cp zimage /mnt/
cp sun8i-h2-plus-orangepi-zero.dtb /mnt/
umount /mnt/
# 寫入rootfs
mount $ /mnt/
cp -r /myrootfs /mnt/
umount /mnt
在u-boot命令列中執行:
=> setenv bootargs 'console=ttys0,115200n8 earlyprintk root=/dev/mmcblk0p1 rootwait panic=10'
=> fatload mmc 0
0x46000000 zimage
reading zimage
3657840
bytes read in
226 ms (15.4 mib/s)
=> fatload mmc 0
0x49000000 sun8i-h2
-plus
-orangepi
-zero
.dtb
reading sun8i-h2
-plus
-orangepi
-zero
.dtb
14025
bytes read in
30 ms (456.1 kib/s)
=> bootz 0x46000000
-0x49000000
成功進入linux系統,重新掛載可讀寫檔案系統,掛載proc,sys,debug目錄:
[ 58.970790] ext4-fs (mmcblk0p2): re-mounted. opts: data=ordered
/ # mount -t proc proc /proc
/ # mount -t sysfs sysfs /sys
/ # mount -t debugfs debugfs /sys/kernel/debug
/ # cat /proc/version
linux version
4.11
.0-rc4-00064-g89970a0 (chenziping@techping-pc) (gcc version
6.2.1
20161016 (linaro gcc 6.2-2016.11) ) #1 smp thu mar 30 18:55:45 cst 2017
/ #
從0開始 二
slam是指當某種移動裝置 如機械人 無人機 手機等 從乙個未知環境裡的未知地點出發,在運動過程中通過感測器 如雷射雷達 攝像頭等 觀測定位自身位置 姿態 運動軌跡,再根據自身位置進行增量式的地圖構建,從而達到同時定位和地圖構建的目的。sfm structure from motion 是一種和sl...
VC usb程式設計從0開始
課題 通過usb來顯示外部電子羅盤的資料.環境 vs.net 2003,usb使用方法 第3方庫 ntddk 日期 2010 02 25 進度 完成指南針顯示ui 未完成 1,微控制器部分工作 2.usb通訊部分.目前遇到的問題 第三方庫新增進來之後,還未移植,編譯的出現問題.日期 2010 02 ...
機器學習 從0開始
by 香蕉麥樂迪 機器學習簡介 機器學習是許多演算法的統稱,其中包含最近幾年火熱的深度學習,還包括許多適用於各種不同場景的其他機器學習演算法 邏輯斯特回歸,svm,knn,adaboost,em,kmeans等等 這些演算法從誕生到現在都有了幾十年的歷史 深度學習指的是深度神經網路,其中用於處理影象...