Cubie Board 2 A20 及其 qemu 仿真实现源代码架构

Cubieboard2折腾手记(一) Cubieboard折腾手记    前段时间终于是入手了一块Cubieboad2,板子的参数看着挺不错,全志A20的cpu,1G的RAM,4G的nandflash。本来就是想搞个树莓派来玩的,后来看了看,选了这个CubieBoard2,加上其他的一些配件的,参不多是400软妹币,全志的资料在网上找了下,也是不少的,对linux也算比较友好的。    废话不多说了,拿到板子后当然是装上自己最喜爱 阅读详情

1,Cubie Board 2 简介

Cubie Board N, 其中 N = 1,2,3,4,5,6,7;

是基于全志 Allwinner 公司的系列 SOC 设计的微型电脑,产品形态和市场都类似树莓派1,2,3,4,5等。

第一代为 Cubie Board 2,基于 Allwinner A20 ARM 芯片设计而成,外观如下图所示:

2,Allwinner A10  soc 的组成结构

从 user mennual看到包括如下模块

先以A10 为例罗列:

各个设备地址映射:

3,物理板 Linux + uboot 移植

尝试构建 cubie board 2 的dibian linux 系统,并在物理板子上跑起来

3.1 构建 debian for cubie board 2

3.1.0 预备环境

3.1.0.1 安装一个 ubuntu 16.4.7

配置 apt 源:

# $ cat /etc/apt/sources.list
# 中科大
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
3.1.0.2 安装软件

WORK_DIR=/home/${USER}/develop/cubieboard
 ROOTFS_DIR=$WORK_DIR/chroot-armhf

sudo apt-get install build-essential libncurses5-dev u-boot-tools \
qemu-user-static debootstrap git binfmt-support libusb-1.0-0-dev pkg-config

sudo apt-get install gcc-4.7-arm-linux-gnueabihf
sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc-4.7 			/usr/bin/arm-linux-gnueabihf-gcc && \
sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc-ar-4.7 		/usr/bin/arm-linux-gnueabihf-gcc-ar && \
sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc-nm-4.7 		/usr/bin/arm-linux-gnueabihf-gcc-nm && \
sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc-ranlib-4.7 	/usr/bin/arm-linux-gnueabihf-gcc-ranlib && \
sudo ln -s /usr/bin/arm-linux-gnueabihf-cpp-4.7 			/usr/bin/arm-linux-gnueabihf-cpp && \
sudo ln -s /usr/bin/arm-linux-gnueabihf-gcov-4.7 			/usr/bin/arm-linux-gnueabihf-gcov

3.1.1 DOWNLOAD sourcecode

存在版本問題,編譯器版本與u-boot的代碼不match了已經,ubuntu-18.0.4沒有 gcc-4.7-arm-linux-gnueabihf,即,無法正確执行安装动作:

sudo apt-get install gcc-4.7-arm-linux-gnueabihf

代码版本太旧了,故use ubuntu 16.4.7


 git clone https://github.com/cubieboard/u-boot-sunxi.git -b cubie/sunxi
 git clone https://github.com/cubieboard/sunxi-tools.git
 git clone https://github.com/cubieboard/sunxi-boards.git
 
 CB1:
git clone https://github.com/cubieboard/linux-sunxi.git -b cubie/sunxi-3.4

3.1.2 构建 u-boot

ubuntu 16.4.7

这个u-boot 的编译,依赖 gcc-4.7-arm-linux-gnueabihf

gcc-4.7-arm-linux-gnueabihf

而 ubuntu 18.4及其以后的Ubuntu的官方 apt 源并不支持 4.7 的安装,故简单地采用 4.7 来编译 u-boot,及整个系统。

build u-boot

$ cd $WORK_DIR/u-boot-sunxi
$ make distclean CROSS_COMPILE=arm-linux-gnueabihf-
$ make cubieboard2 CROSS_COMPILE=arm-linux-gnueabihf-


#//CB1$ make cubieboard CROSS_COMPILE=arm-linux-gnueabihf-

success: 

3.1.3 创建文件系统:

sudo debootstrap --foreign --arch=armhf buster .  http://mirrors.huaweicloud.com/debian/
sudo cp /usr/bin/qemu-arm-static usr/bin/
LC_ALL=C LANGUAGE=C LANG=C sudo chroot ./ debootstrap/debootstrap --second-stage
LC_ALL=C LANGUAGE=C LANG=C sudo chroot . dpkg --configure -a

cd $ROOTFS_DIR && \
sudo tar jcpvf ../debian-rootfs-armhf-clean.tar.bz2 *

# reference 参考:
# https://www.cnblogs.com/linux-learn/p/18168589

$ sudo debootstrap --foreign --arch=armhf buster .  http://mirrors.huaweicloud.com/debian/ 

执行上一条之后:

sudo cp /usr/bin/qemu-arm-static usr/bin/
LC_ALL=C LANGUAGE=C LANG=C sudo chroot ./ debootstrap/debootstrap --second-stage
LC_ALL=C LANGUAGE=C LANG=C sudo chroot . dpkg --configure -a

执行上三条之后:

cd $ROOTFS_DIR && \
sudo tar jcpvf ../debian-rootfs-armhf-clean.tar.bz2 *

3.1.4 构建工具
 

$ cd $WORK_DIR/sunxi-tools && make

比较容易

3.1.5 构建 linux kernel


$ cd $WORK_DIR/linux-sunxi && \
 git checkout cb2/sunxi-3.4 && \
 cp arch/arm/configs/sun7i_defconfig ./.config && \
 make ARCH=arm menuconfig

需要做一些配置:

如下九项,都编译进内核中,<*>:

Device Drivers ---> Serial ATA and Parallel ATA drivers ---> SoftWinner Platform AHCI SATA support
Device Drivers ---> GPIO Support ---> GPIO Support for sunxi platform
Networking support ---> Wireless ---> Generic IEEE 802.11 Networking Stack (mac80211)
Device Drivers ---> Network device support ---> Wireless LAN ---> Ralink driver support
Device Drivers ---> Network device support ---> Universal TUN/TAP device driver support
Device Drivers ---> Multimedia support ---> Video capture adapters ---> V4L USB devices ---> USB Video Class (UVC)
Device Drivers ---> Input device support ---> Keyboards ---> sunxi IR support
Device Drivers ---> USB support ---> USB Serial Converter support ---> USB Prolific 2303 Single Port Serial Driver
Device Drivers ---> Graphics support ---> Support for frame buffer devices ---> HDMI Driver Support(sunxi)

。。。

九项配置检查完成,有的需要改为 <*>

配置完成,保存后开始编译内核:


$ make -j5 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules

3.1.6 继续root fs 制作



cd $ROOTFS_DIR && \
sudo chroot . passwd
输入密码两次

sudo echo "Cubieboard" > etc/hostname
sudo vim etc/hostname 


sudo echo "127.0.0.1 Cubieboard" >> etc/hosts
sudo cp $WORK_DIR/linux-sunxi/arch/arm/boot/uImage boot/

sudo make -C $WORK_DIR/linux-sunxi INSTALL_MOD_PATH=`pwd` ARCH=arm \
CROSS_COMPILE=arm-linux-gnueabihf- modules_install



sudo vim etc/inittab

T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100




sudo vim etc/apt/sources.list
deb http://http.debian.net/debian/ buster main contrib non-free
deb http://security.debian.org/ buster/updates main contrib non-free


sudo chroot . apt-get update && \
sudo chroot . apt-get upgrade && \
sudo chroot . apt-get install openssh-server


sudo chroot . apt-get install locales
sudo vim etc/locale.gen
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

sudo chroot . locale-gen


sudo chroot . apt-get install wireless-tools wpasupplicant firmware-ralink


sudo vim $ROOTFS_DIR/boot/boot.cmd 
"
setenv bootargs console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x1024p60 \
root=/dev/mmcblk0p1 rootwait panic=10 ${extra}
ext2load mmc 0 0x43000000 boot/script.bin
ext2load mmc 0 0x48000000 boot/uImage
bootm 0x48000000
"

sudo mkimage -C none -A arm -T script -d boot/boot.cmd boot/boot.scr

sudo cp $WORK_DIR/sunxi-boards/sys_config/a20/cubieboard2.fex boot/script.fex





sudo vim $ROOTFS_DIR/boot/script.fex

[gpio_para]
gpio_used = 1
gpio_num = 30
gpio_pin_1 = port:PD01<1><default><default><default>
gpio_pin_2 = port:PD02<1><default><default><default>
gpio_pin_3 = port:PD03<1><default><default><default>
gpio_pin_4 = port:PD04<1><default><default><default>
gpio_pin_5 = port:PD05<1><default><default><default>
gpio_pin_6 = port:PD06<1><default><default><default>
gpio_pin_7 = port:PD07<1><default><default><default>
gpio_pin_8 = port:PD08<1><default><default><default>
gpio_pin_9 = port:PD09<1><default><default><default>
gpio_pin_10 = port:PD10<1><default><default><default>
gpio_pin_11 = port:PD11<1><default><default><default>
gpio_pin_12 = port:PD12<1><default><default><default>
gpio_pin_13 = port:PD13<1><default><default><default>
gpio_pin_14 = port:PD14<1><default><default><default>
gpio_pin_15 = port:PD15<1><default><default><default>
gpio_pin_16 = port:PD16<1><default><default><default>
gpio_pin_17 = port:PD17<1><default><default><default>
gpio_pin_18 = port:PD18<1><default><default><default>
gpio_pin_19 = port:PD19<1><default><default><default>
gpio_pin_20 = port:PD20<1><default><default><default>
gpio_pin_21 = port:PD21<1><default><default><default>
gpio_pin_22 = port:PD22<1><default><default><default>
gpio_pin_23 = port:PD23<1><default><default><default>
gpio_pin_24 = port:PD24<1><default><default><default>
gpio_pin_25 = port:PD25<1><default><default><default>
gpio_pin_26 = port:PD26<1><default><default><default>
gpio_pin_27 = port:PD27<1><default><default><default>
gpio_pin_28 = port:PH07<1><default><default><default>
gpio_pin_29 = port:PB10<1><default><default><default>
gpio_pin_30 = port:PB11<1><default><default><default>




sudo $WORK_DIR/sunxi-tools/fex2bin boot/script.fex boot/script.bin






sudo vim etc/network/interfaces

"
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
"



3.2 刷机

3.2节以前的内容是在 ubuntu 16.04.7的 virtual box 虚拟机中进行的,然后scp 到 host ubuntu中。

解压到用户目录下,

设置WORK_DIR, ROOTFS_DIR:


WORK_DIR=/home/${USER}/develop/cubieboard
ROOTFS_DIR=$WORK_DIR/chroot-armhf

使用 dd 制作启动 TF卡

并用 分区后拷贝rootfs到TF卡




制作 TF 卡:
TF card in Linux is /dev/sdc, then:

CARD=/dev/sdc

cd $WORK_DIR/u-boot-sunxi
sudo dd if=/dev/zero of=$CARD bs=1k count=1024
sudo dd if=u-boot-sunxi-with-spl.bin of=$CARD bs=1024 seek=8



分区:
sudo fdisk $CARD
:n
:p
:2048
:
:w

sudo mkfs.ext4 ${CARD}1

拷贝 root fs:
cd $ROOTFS_DIR
sudo mount ${CARD}1 /mnt
sudo tar --exclude=qemu-arm-static -cf - . | sudo tar -C /mnt -xvf -
sudo sync && sudo umount /mnt



至此,便可以将TF卡插入 CubieBoard2中了,

4,qemu 仿真 Cubie Board 1

$ ./qemu-system-arm -machine help
Supported machines are:

5,qemu 仿真 Cubie Board 1 的源码架构

6,设备表示

7,添加新设备

7,附录

附录1,debian的参考版本

1. Debian 0.01 (Buzz) - 创世之作 (1993)
Debian的初始版本,代号为Buzz,于1993年诞生。由Ian Murdock创立,其目标是构建一个稳定、自由、开放的Linux发行版。Buzz版本主要集中于基本的Linux系统构建,为后来的版本奠定了基础。
2. Debian 1.1 (Buzz) - 稳健的起点 (1996)
Debian 1.1,仍然使用Buzz的代号,于1996年发布。这个版本引入了APT(Advanced Package Tool)软件包管理系统,成为Debian系统标志性的特征之一。APT极大地简化了软件包的依赖关系管理,为用户提供了更便捷的升级和安装体验。
3. Debian 1.2 (Rex) - 长期支持的启航 (1996)
Debian 1.2,代号Rex,于1996年底发布。这是Debian的首个长期支持版本(LTS),为用户提供更长时间的支持和更新。Rex版本还引入了deb-make工具,使得软件包的构建和维护更加简单。
4. Debian 2.0 (Hamm) - 新纪元的来临 (1998)
Debian 2.0,代号Hamm,于1998年发布。这个版本引入了对更多硬件架构的支持,包括SPARC、MIPS和Alpha等。Hamm版本还采用了新的安装系统,使得安装过程更加友好。
5. Debian 2.1 (Slink) - 项目的巩固 (1999)
Debian 2.1,代号Slink,于1999年发布。这个版本巩固了Debian项目的发展方向,加强了软件包的质量控制。Slink版本引入了新的dpkg工具,提高了软件包管理的效率和可靠性。
6. Debian 2.2 (Potato) - 向前迈进 (2000)
Debian 2.2,代号Potato,于2000年发布。这个版本引入了更多的自动化工具,使得构建和维护软件包变得更加简单。Potato版本还对X Window系统和KDE桌面环境进行了升级,提供更现代化的用户体验。
7. Debian 3.0 (Woody) - 稳定的未来 (2002)
Debian 3.0,代号Woody,于2002年发布。这个版本在稳定性和安全性方面取得了重要进展,引入了Debian安全团队来处理漏洞和安全问题。Woody版本还加入了IPv6支持,使得系统更好地适应未来的网络环境。
8. Debian 3.1 (Sarge) - 跨越新世纪 (2005)
Debian 3.1,代号Sarge,于2005年发布。这是Debian首个支持AMD64架构的版本,标志着Debian跨入了64位计算的时代。Sarge版本还引入了新的Debian安装程序,改善了安装过程的用户体验。
9. Debian 4.0 (Etch) - 稳定性和性能的平衡 (2007)
Debian 4.0,代号Etch,于2007年发布。这个版本对Debian的架构进行了重新组织,引入了新的维护者制度,提高了软件包的质量。Etch版本还改进了系统初始化和引导过程,提供更好的性能和响应速度。
10. Debian 5.0 (Lenny) - 自由软件的标杆 (2009)
Debian 5.0,代号Lenny,于2009年发布。这个版本强调自由软件的价值,加强了对自由操作系统的支持。Lenny版本引入了更多的虚拟化技术,包括Xen和KVM,为云计算奠定了基础。
11. Debian 6.0 (Squeeze) - 稳健与稳定的完美结合 (2011)
Debian 6.0,代号Squeeze,于2011年发布。这个版本引入了完全自由的Linux内核,摒弃了一些非自由的二进制固件。Squeeze版本加强了对IPv6和NFSv4的支持,提高了网络协议的性能和安全性。
12. Debian 7.0 (Wheezy) - 支持多架构的巅峰 (2013)
Debian 7.0,代号Wheezy,于2013年发布。这个版本引入了Multiarch支持,使得用户可以在同一系统上运行多个架构的二进制程序。Wheezy版本还加强了对ARM架构的支持,适应了嵌入式和移动设备领域的需求。
13. Debian 8.0 (Jessie) - 系统管理的新时代 (2015)
Debian 8.0,代号Jessie,于2015年发布。这个版本引入了Systemd作为系统初始化和管理工具,取代了之前的init系统。Jessie版本还加强了对UEFI固件的支持,使得Debian更好地运行在新一代硬件上。
14. Debian 9.0 (Stretch) - 安全与稳定的坚实基石 (2017)
Debian 9.0,代号Stretch,于2017年发布。这是当前稳定版本,加强了对安全性和稳定性的注重。Stretch版本引入了更多的虚拟化技术,包括支持Docker容器。同时,Debian安全团队继续致力于及时响应和修复安全漏洞。
15. Debian 10.0 (Buster) - 进化与创新的兼容 (2019)
Debian 10.0,代号Buster,于2019年发布。这个版本引入了更多的自动化工具,加强了对容器技术的支持。Buster版本还改进了对安全启动(Secure Boot)的支持,适应了更严格的硬件安全标准。
16. Debian 11.0 (Bullseye) - 当前的巅峰 (2021)
Debian 11.0,代号Bullseye,于2021年发布。这是最新版本,继续改进了安全性、性能和用户体验。Bullseye版本引入了新的Linux内核5.10,提供更好的硬件支持。同时,Debian社区不断致力于维护和更新软件包,以确保系统的稳定性和安全性。
17. Debian 11.3 (Bullseye) (2022年5月)
Debian 11.3版本对系统进行了细致优化,提升安全稳定性能。
18. Debian 12.0 (Bookworm) (预计2023年)
Bookworm将使用Linux内核5.19,对容器和虚拟化进行改进。
19. Debian 13.0 (未命名) (2024年)
Debian 13.0版本还在开发中,将继续优化软件及系统更新。
20. Debian 14.0 (未命名) (2025年)

附录2,整体过程

命令记录

sudo rm /usr/bin/arm-linux-gnueabihf-gcc && \
sudo rm /usr/bin/arm-linux-gnueabihf-gcc-ar && \
sudo rm /usr/bin/arm-linux-gnueabihf-gcc-nm && \
sudo rm /usr/bin/arm-linux-gnueabihf-gcc-ranlib && \
sudo rm /usr/bin/arm-linux-gnueabihf-cpp && \
sudo rm /usr/bin/arm-linux-gnueabihf-gcov




sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc-4.7 			/usr/bin/arm-linux-gnueabihf-gcc && \
sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc-ar-4.7 		/usr/bin/arm-linux-gnueabihf-gcc-ar && \
sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc-nm-4.7 		/usr/bin/arm-linux-gnueabihf-gcc-nm && \
sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc-ranlib-4.7 	/usr/bin/arm-linux-gnueabihf-gcc-ranlib && \
sudo ln -s /usr/bin/arm-linux-gnueabihf-cpp-4.7 			/usr/bin/arm-linux-gnueabihf-cpp && \
sudo ln -s /usr/bin/arm-linux-gnueabihf-gcov-4.7 			/usr/bin/arm-linux-gnueabihf-gcov






WORK_DIR=/home/${USER}/develop/cubieboard
ROOTFS_DIR=$WORK_DIR/chroot-armhf



mkdir -p $WORK_DIR
 CB1:
 git clone https://github.com/cubieboard/u-boot-sunxi.git -b cubie/sunxi && \
 git clone https://github.com/cubieboard/sunxi-tools.git && \
 git clone https://github.com/cubieboard/sunxi-boards.git && \
 git clone https://github.com/cubieboard/linux-sunxi.git -b cubie/sunxi-3.4

CB2:
 git clone https://github.com/cubieboard/u-boot-sunxi.git -b cubie/sunxi && \
 git clone https://github.com/cubieboard/sunxi-tools.git && \
 git clone https://github.com/cubieboard/sunxi-boards.git && \
 git clone https://github.com/cubieboard/linux-sunxi.git -b cb2/sunxi-3.4





$ cd $WORK_DIR/u-boot-sunxi
$ make distclean CROSS_COMPILE=arm-linux-gnueabihf-
$ make cubieboard2 CROSS_COMPILE=arm-linux-gnueabihf-



cd $ROOTFS_DIR && \
sudo debootstrap --foreign --arch=armhf buster .  http://mirrors.huaweicloud.com/debian/
sudo cp /usr/bin/qemu-arm-static usr/bin/
LC_ALL=C LANGUAGE=C LANG=C sudo chroot ./ debootstrap/debootstrap --second-stage
LC_ALL=C LANGUAGE=C LANG=C sudo chroot . dpkg --configure -a
 
cd $ROOTFS_DIR && \
sudo tar jcpvf ../debian-rootfs-armhf-clean.tar.bz2 *


cd $WORK_DIR/u-boot-sunxi
make distclean CROSS_COMPILE=arm-linux-gnueabihf-
make cubieboard2 CROSS_COMPILE=arm-linux-gnueabihf-

cd $WORK_DIR/sunxi-tools
make


cd $WORK_DIR/linux-sunxi
cp arch/arm/configs/sun7i_defconfig .config
make ARCH=arm menuconfig


Device Drivers ---> Serial ATA and Parallel ATA drivers ---> SoftWinner Platform AHCI SATA support
Device Drivers ---> GPIO Support ---> GPIO Support for sunxi platform
Networking support ---> Wireless ---> Generic IEEE 802.11 Networking Stack (mac80211)
Device Drivers ---> Network device support ---> Wireless LAN ---> Ralink driver support
Device Drivers ---> Network device support ---> Universal TUN/TAP device driver support
Device Drivers ---> Multimedia support ---> Video capture adapters ---> V4L USB devices ---> USB Video Class (UVC)
Device Drivers ---> Input device support ---> Keyboards ---> sunxi IR support
Device Drivers ---> USB support ---> USB Serial Converter support ---> USB Prolific 2303 Single Port Serial Driver
Device Drivers ---> Graphics support ---> Support for frame buffer devices ---> HDMI Driver Support(sunxi)


make -j5 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules



sudo chroot . passwd
 
sudo vim etc/hostname
"Cubieboard"

sudo vim etc/hosts
"127.0.0.1 Cubieboard"


sudo cp $WORK_DIR/linux-sunxi/arch/arm/boot/uImage boot/
sudo make -C $WORK_DIR/linux-sunxi INSTALL_MOD_PATH=`pwd` ARCH=arm \
CROSS_COMPILE=arm-linux-gnueabihf- modules_install








sudo vim etc/inittab
T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100


sudo vim etc/apt/sources.list
deb http://http.debian.net/debian/ buster main contrib non-free
deb http://security.debian.org/ buster/updates main contrib non-free

sudo chroot . apt-get update
sudo chroot . apt-get upgrade


sudo chroot . apt-get install openssh-server


sudo chroot . apt-get install locales

sudo vim etc/locale.gen

en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

sudo chroot . locale-gen




sudo chroot . apt-get install wireless-tools wpasupplicant firmware-ralink







sudo vim $ROOTFS_DIR/boot/boot.cmd

setenv bootargs console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x1024p60 \
root=/dev/mmcblk0p1 rootwait panic=10 ${extra}
ext2load mmc 0 0x43000000 boot/script.bin
ext2load mmc 0 0x48000000 boot/uImage
bootm 0x48000000


sudo mkimage -C none -A arm -T script -d boot/boot.cmd boot/boot.scr






sudo cp $WORK_DIR/sunxi-boards/sys_config/a20/cubieboard2.fex boot/script.fex





sudo vim $ROOTFS_DIR/boot/script.fex

[gpio_para]
gpio_used = 1
gpio_num = 30
gpio_pin_1 = port:PD01<1><default><default><default>
gpio_pin_2 = port:PD02<1><default><default><default>
gpio_pin_3 = port:PD03<1><default><default><default>
gpio_pin_4 = port:PD04<1><default><default><default>
gpio_pin_5 = port:PD05<1><default><default><default>
gpio_pin_6 = port:PD06<1><default><default><default>
gpio_pin_7 = port:PD07<1><default><default><default>
gpio_pin_8 = port:PD08<1><default><default><default>
gpio_pin_9 = port:PD09<1><default><default><default>
gpio_pin_10 = port:PD10<1><default><default><default>
gpio_pin_11 = port:PD11<1><default><default><default>
gpio_pin_12 = port:PD12<1><default><default><default>
gpio_pin_13 = port:PD13<1><default><default><default>
gpio_pin_14 = port:PD14<1><default><default><default>
gpio_pin_15 = port:PD15<1><default><default><default>
gpio_pin_16 = port:PD16<1><default><default><default>
gpio_pin_17 = port:PD17<1><default><default><default>
gpio_pin_18 = port:PD18<1><default><default><default>
gpio_pin_19 = port:PD19<1><default><default><default>
gpio_pin_20 = port:PD20<1><default><default><default>
gpio_pin_21 = port:PD21<1><default><default><default>
gpio_pin_22 = port:PD22<1><default><default><default>
gpio_pin_23 = port:PD23<1><default><default><default>
gpio_pin_24 = port:PD24<1><default><default><default>
gpio_pin_25 = port:PD25<1><default><default><default>
gpio_pin_26 = port:PD26<1><default><default><default>
gpio_pin_27 = port:PD27<1><default><default><default>
gpio_pin_28 = port:PH07<1><default><default><default>
gpio_pin_29 = port:PB10<1><default><default><default>
gpio_pin_30 = port:PB11<1><default><default><default>




$WORK_DIR/sunxi-tools/fex2bin boot/script.fex boot/script.bin






sudo vim etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp










CARD=/dev/sda
cd $WORK_DIR/u-boot-sunxi
dd if=/dev/zero of=$CARD bs=1k count=1024
dd if=u-boot-sunxi-with-spl.bin of=$CARD bs=1024 seek=8





sudo  fdisk $CARD
:n
:p
:2048
:15278078
:Y
:w


sudo mkfs.ext4 ${CARD}1



$ cd $ROOTFS_DIR
sudo mount ${CARD}1 /mnt
sudo tar --exclude=qemu-arm-static -cf - . | sudo tar -C /mnt -xvf -
sudo sync && sudo umount /mnt



附录3,参考网址

https://romanrm.net/a10/debian

https://romanrm.net/a10/qemu



https://gitlab.com/qemu-project/qemu/-/issues/2326
qemu-system-arm -M cubieboard -m 1G -nographic -drive file=sd.img,format=raw,if=sd

https://wiki.qemu.org/Documentation/Platforms/ARM




https://freemandealer.github.io/2015/08/27/debug-kernel-with-qemu/

qemu-system-arm -machine cubieboard -s -S -kernel project/cubieboard/linux-source-3.4.79-sun7i/arch/arm/boot/zImage -append "console=ttyS0" -serial mon:stdio -nographic


https://www.qemu.org/docs/master/system/arm/cubieboard.html



https://fedoraproject.org/wiki/Architectures/ARM/F22/Installation

Cubieboard2(四) 系统构建 —— 基于 mainline M,则表示该驱动将作为一个独立的模块编译,并且可以在需要时通过 insmod 或 modprobe 加载,键入 “M” 生效;尝试在升级内核后的 Cubieboard2 上安装 .deb 驱动包,但报错 linux-headers 问题以及 Invalid module format 问题,因此选择直接编译到内核中。linux-sunxi 基于 linux-3.4 内核修改,而 Tenda U2 V5.0(基于 aic8800 芯片)支持的 linux 内核版本为 V3.10-V6.2。 阅读详情

相关推荐

Playwright错误处理与分层重试策略实战指南

Playwright作为现代Web自动化测试框架,其错误模型不同于传统Selenium——它以用户行为建模,将等待、可见性、可交互性等拆解为独立状态断言。理解TimeoutError、TargetClosedError等原生错误类型是构建健壮自动化脚本的前提;而真正的稳定性保障,依赖于分层错误分类(如三色错误法)、动作级精准重试(结合actionTimeout与expect断言)、状态机驱动的事务恢复,以及生产级熔断降级机制。本文深入解析Playwright在弱网、国产浏览器兼容、支付网关故障等典型场景下的

weixin_34337381的博客 367

Cubieboard2(一) 官方镜像使用与配置

1)由于 Cubieboard2 发布于 2012 年左右,官方提供的镜像是基于 debian 7(wheezy),所以这里将 debian 的版本升级到较新稳定版 debian 11(bullseye)。可以看到,有 Server 版和桌面版,为了节省资源我选择 Server 版中的 datacard 版(即第 2 个镜像)。1)由于我想把 Cubieboard 当作服务器,两个 LED(绿、蓝)在夜里长亮影响睡眠,需要关闭。如果提示证书的问题,则将 https 替换成 http。

MicroMehhh的博客 1812

Qemu运行Linux0.01

1. windows模拟器运行Linux0.01三年前尝试过在windows上使用模拟器运行Linux0.01, 简单记录了一下操作过程,参考windows模拟器运行Linux0.01。2. Linux上使用Qemu运行Linux0.01在Linux机器上,使用Qemu运行Linux0.01,这部分工作国外很早就有人做过了,但是在国内,由于互联网管制,百度搜索里几乎没有相关的资料,为了学习者的方便

chengwenyang的专栏 3263

cubieboard开发板简介

Cubieboard,简称Cb,是由珠海的Cubietech团队推出,跟业内有名的pcduino一样,Cubieboard是i基于珠海全志科技的A10/A20等系列处理器的开发板。Cubieboard初次生产是在2012年的8月8日,目前有三代产品,第一代是采用A10的基础版,其中有分8月8日生产的版本和9月9日生产的版本,第二代更换了双核处理器A20,并且经过测试可以稳定地运行在1.2Ghz上,

麒麟菜籽的专栏 4240

基于yolov5的鸟类图像准确识别

本项目主要基于yolov5进行鸟类准确识别,主要识别白鹭家族,红脚鹬,反嘴鹬,环颈珩,小白鹭以及夜鹭六类鸟

weixin_46064184的博客 3819

AD9361 官方例程

文章目录一、官方资料1.1 介绍1.2 下载 和 使用1.3 相关资料二、步骤2.1 在Vivado中构建HDL2.2 在SDK中构建No- OS总结 一、官方资料 1.1 介绍 HDL参考设计介绍:AD9361 HDL Reference Designs 无操作系统介绍:AD9361 No-OS Software 1.2 下载 和 使用 HDL下载:Download HDL 在Vivado中构建HDL:Building HDL No-OS下载:Download No-OS 1.3 相关资料 AD

weixin_44630490的博客 3万+

cubieboard刷机

我用的是cubieboard2(在cubieboard内部是cubieboard20),而cubietrunk好像

OSSRS 4601

Nginx的启动、停止与重启命令(非yum方式安装)图解版

目录一、Nginx启动二、Nginx停止的三种方式2.1、第一种方式(从容停止)2.2、第二种方式(快速停止)2.3、第三种方式(强制停止)三、Nginx重启3.1、首先,验证nginx配置文件是否正确3.1.1、验证nginx配置文件(方法一)3.1.1、验证nginx配置文件(方法二)3.2、最后,重启Nginx服务3.2.1、重启Nginx服务(方法一)3.2.2、重启Nginx服务(方法二) 一、Nginx启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 /usr/loc

小志的博客 6840

Cubieboard2(二) 系统构建 —— 基于 linux-sunxi

(一)工具安装:https://blog.csdn.net/wb4916/article/details/72898266(二)代码下载:https://blog.csdn.net/wb4916/article/details/72898747(三)Debian 基础系统配置:https://blog.csdn.net/wb4916/article/details/72899191。

MicroMehhh的博客 2058

开源AI数字人DUIX:从零构建你的智能交互助手

本文详细介绍了如何利用开源AI数字人DUIX从零构建智能交互助手。文章阐述了DUIX作为开源项目的核心优势,包括低成本启动、低网络依赖和高度可定制性,并提供了从开发环境搭建、核心模块(AI模型、语音、形象)配置到个性化业务逻辑开发与最终部署的完整实践指南,帮助开发者快速掌握构建专属AI数字人的全流程。

weixin_29051811的博客 497

大开眼界的十大开源人工智能项目

这是一个强大的开源工具,能让你在不同框架之间自由切换,无需重写代码。它是一个开源工具,能用简单的SQL语言同时处理数据和AI模型,让一切变得有序而高效。Rasa是我开发智能聊天机器人时的首选,它让你轻松掌控机器人对话的每个细节。我经常用它快速验证模型在不同框架下的表现,省去了大量烦躁的调试过程。最近发现的Vapi是一个以API方式提供的语音AI工具,开发者友好程度超乎想象。KNIME是一个以拖拽方式构建数据分析流程的开源工具,仿佛是数据界的乐高积木。它像个忠诚的守门员,确保你的模型始终健康运行。

wjianwei666的专栏 1098

cubieboard2 android,在cubieboard2双卡版上从零构建Android4.2.2系统

板子买了一段时间,终于有时间可以玩玩了,论坛上找浪费了很多时间。把虚拟机环境搭建起来,编译好镜像就可以直接使用烧写工具烧写到TF卡上了。由于买的是双TF卡插槽,没有nand,所以只能在TF卡上制作镜像了。制作过程参考官方文档,好好总结一下,一来以后自己再做时图懒图方便,二来可以方便后来人。主要可以分为一下几个步骤:一、搭建编译环境可以在XP或win7系统上安装虚拟机,在虚拟机中安装交叉编译工具来编...

weixin_34961316的博客 411

FlowPic实战:从流量到图像的端到端加密应用识别

本文深入解析了FlowPic技术如何将网络流量转化为图像,并利用CNN模型进行端到端加密应用识别。该方法通过分析数据包大小和时序信息生成流量图像,有效绕过加密内容,实现对视频、聊天、文件传输等应用的精准分类。文章提供了从流量抓取、图像生成到轻量级CNN模型设计与训练的完整实战指南,并探讨了在VPN、Tor等复杂场景下的应用与挑战。

weixin_29046035的博客 145

Cubieboard团队发布 “cubieboard2双卡版”开源硬件

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34307464的博客 487

C# 上位机之海康工业相机开发(SDK)实战教程

海康工业相机的C#开发核心是基于MVS SDK的“初始化→枚举→连接→采集→释放”流程,其中图像回调处理和格式转换是关键。严格按照SDK文档处理设备类型(网口/USB)和像素格式;及时释放图像资源,避免内存泄漏;错误码是排查问题的重要依据(可参考SDK中的“错误码说明”文档)。掌握这些基础后,可结合机器视觉算法(如OpenCV)实现缺陷检测、尺寸测量等高级功能,构建完整的工业视觉系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3807

矿石生成(1)

这个提供了标准化的矿石放置配置模板简化了常见和稀有矿石的配置过程遵循了Minecraft原版的世界生成模式提高了代码的可读性和可维护性通过使用这个类,模组开发者可以更轻松地配置矿石的生成规则,而不需要每次都手动编写完整的放置修饰符列表。这种设计模式在原版Minecraft和其他大型模组中也很常见,是一种良好的编程实践。// 导入语句...// 字段和方法...包声明表明这个类位于luckymod模组的WorldGen包中,专门处理世界生成相关配置。导入语句。

qq_24992377的博客 132

cubieboard2使用ov7670模块

cubieboard2_android_SDK_v1.05源码(cubieboard2板+dvk521扩展板)

lynchyo——得失只在刹那间 4235

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

CubieBorad2内核安卓系统编译笔记

环境配置 虚拟机安装,ubuntu-12.04.4-dvd-amd64.iso镜像。 安装JDK $ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" $ sudo apt-get update 上述全志提供的JDK安装方法,如不能成功安装,请参考如下: https://mp.csdn.n...

Niklaus_Lee的博客 456

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

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

Cubieboard2(三) 系统构建 —— WSL Ubuntu 中挂载 U 盘(SDCard)

如果我们要使用 wsl(这里的 wsl 指的是 WSL 2.x 版本,下同) 进行 Linux 驱动开发,那么我们首先要将 SDCard 挂载到 wsl 中。1)打开用户目录(如 C:\Users\[username],可在资源管理器中输入 %UserProfile% 打开该目录),将 bzImage 拷贝进去。usbipd 在 OSI 的网络层(IP)、传输层(TCP)之间建立 USB 设备与虚拟机的通信,即 IP 网络共享 USB 设备。与 Linux 驱动开发的流程一样:配置驱动,编译内核。

MicroMehhh的博客 1959

Cubieboard2(五) 安装无线网卡驱动

(3)再买一个 USB 的直角转接头(本来想买 U 型的,脑海中 3D 建模一下发现 U 型的插上后,网卡天线要么水平,要么朝下),买回来后发现转接头的 USB 公头部分也短,没有什么是一把指甲刀解决不了的,打磨一下终于可以插上了。3)Linux 源码:选择 v6.1-rc8(这里是我的一个误区,原以为这些 rc 版本是 v6.1 的升级版本,实际上 v6.1 才是包含 patch 的稳定版本,即应该直接选择 v6.1 版本)(4)去官网下载 Linux 下的网卡驱动包,安装,报错,啊!

MicroMehhh的博客 3878

Cubieboard开发环境、Uboot的SD启动卡制作、U-boot初步分析

拿到Cubieboard已经1周多了,平时上班比较忙,只能晚上玩一会,年关将近,周末都要加班呀.... 拿到一个板,若只刷别人给的Image学不到太多东西,于是自己一点一点来 首先是Uboot 移植,所谓移植,其实别人都做好了,我只不过是做了一个启动卡   系统环境:电脑二台,台式机XP;笔记本RHEL5,平时就用这个,懒得整ubuntu 代码工具:XP上:          Sourc

生命在于折腾 1万+

安卓机顶盒运行linux,全志 Allwinner A20 机顶盒刷入原生 Debian

花费 60 大洋购买了一台天敏电视精灵 3 安卓机顶盒。买来的目的就是为了刷入原生的 Debian 或其他发行版本。查看了一下具体的硬件:全志 Allwinner A20 双核 CPU,Cortex-A7 架构;内存 1G;闪存 4G;两个 USB,一个 HDMI,一个 AV。大体看了一下 Sunxi 的 Wiki,发现可以按照以下的办法来刷入。最好有一根 ttl 线来接入盒子的 UART 接口查...

weixin_42400619的博客 5086

A10/A20 Bootloader加载过程分析

A10/A20 Bootloader加载过程分析 注:由于全志A10和A20在加载Bootloader过程方面基本一致,下面仅以A20叙述,但同时也适用于A10。另外在不需要区分Cubieboard1和Cubieboard2的情况下,统称为Cubieboard;另现在市面上一般所说的SD卡即为Micro SD Card,也就是TF卡,为区别于一般传统的SD卡,本文一般使用TF卡描述,但同于平

allen6268198的专栏 2万+

基于QEMU的LCD驱动详解

概述:使用QEMU模型LCD屏幕,可以只写驱动程序,不需要设置LCD硬件相关,也不需要映射Framebuffer。使用QEMU可以非常方便地调试内核、查看驱动程序执行过程有助于深入研究内核及驱动Linux驱动 = 驱动框架 + 硬件操作。如果硬件操作足够简单,我们就可以把精力放在驱动程序的框架上,这才是Linux的核心。对于硬件操作,你至少要做这些事情:设置引脚用于LCD阅读LCD手册,阅读LCD控制器手册,根据LCD参数设置LCD控制器。

xace007的博客 1540

cubieboard服务器系统,cubieboard 搭建家用服务器

犹豫再三,用于买入了cubieboard2。现在用来做家用现在搭配的环境是debain+apache+php+mysql+btsync+xunleilamp是搭建web服务的,btsync是专门用来同步我平板的文件的,平时出去主要用平板来实现过程如下(主要是讲一下大概啊,有问题可以问,尽量解答)系统是debain的,直接刷被人的cubian,感觉还可以。40块入了个二手的80g 3.5盘,但是~~...

weixin_42447265的博客 349

qemu的arm下的模拟仿真,支持多个主板型号

在 QEMU 中,ARM 架构的主板模拟仿真是通过模拟 ARM 处理器及其外围设备来实现的。QEMU 支持多种 ARM 开发板和 SoC(System on Chip)的模拟,使得开发者可以在没有物理硬件的情况下运行和调试 ARM 软件。QEMU 的 ARM 主板模拟仿真功能非常强大,支持多种开发板和 SoC 的模拟。通过 QEMU,开发者可以在没有物理硬件的情况下运行和调试 ARM 软件,极大地提高了开发和测试的效率。无论是学习 ARM 架构,还是开发嵌入式系统,QEMU 都是一个不可或缺的工具。

远方雪的专栏 2344
上一篇: open-gpu-doc, nvidia 的这些文档资料怎么用呢
下一篇: -Wl,-rpath= 编译器链接器指定动态库路径 与 LD_LIBRARY_PATH
Eloudy
博客等级 码龄19年 2124粉丝 1422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值