稚晖君planck_Pi游玩笔记
侧边栏壁纸
  • 累计撰写 18 篇文章
  • 累计收到 0 条评论

稚晖君planck_Pi游玩笔记

lycraft
2022-05-12 / 0 评论 / 55 阅读 / 正在检测是否收录...

稚晖君planck_Pi游玩笔记

[TOC]

docker

安装docker可以直接

sudo apt update
sudo apt install docker.io -y

将用户加入docker group中,然后重启

sudo gpasswd -a ${your_user_name} docker
sudo service docker restart

docker进入镜像后先换源

sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list

依赖环境

sudo apt update
sudo apt install xz-utils nano wget unzip build-essential git bc swig libncurses5-dev libpython3-dev libssl-dev pkg-config zlib1g-dev libusb-dev libusb-1.0-0-dev python3-pip gawk bison flex -y
sudo apt install python python-dev lib32ncurses5 lib32z1 vim dwarves -y

交叉编译工具链

#下载
wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
#解压
sudo mkdir /usr/local/arm
sudo tar -vxf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz -C /usr/local/arm
#配置
sudo nano /etc/profile
#在末尾添加
PATH=$PATH:/usr/local/arm/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin
#使之生效
source /etc/profile 
#验证
arm-linux-gnueabi-gcc -v

tf卡分区

可以使用gparted进行分区
sudo apt-get install gparted

使用命令行进行分区

sudo fdisk -l 
sudo umount /dev/sdb
sudo fdisk /dev/sdb

## d删除分区;n新建分区;w保存

sudo mkfs.vfat /dev/sdb1 # 将第1分区格式化成FAT
sudo mkfs.ext4 /dev/sdb2 # 将第2分区格式化成FAT  

uboot

下载u-boot源码

git clone https://github.com/Lichee-Pi/u-boot.git -b nano-v2018.01
cd u-boot
//git branch -a
//git checkout nano-v2018.01

为了方便后边编译在248行添加 目标构架是arm,交叉编译器是

vim Makefile

ARCH=arm
CROSS_COMPILE=arm-linux-gnueabi-

在uboot根目录进行编译配置为不带spi,来在根目录生成.config

make licheepi_nano_defconfig

图形化配置

make menuconfig
#Boot arguments
console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw
#bootcmd value
load mmc 0:1 0x80008000 zImage;load mmc 0:1 0x80c08000 suniv-f1c100s-licheepi-nano.dtb;bootz 0x80008000 - 0x80c08000;

回到uboot根目录进行编译

make -j4

确定已经生成了u-boot-sunxi-with-spl.bin文件

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

linux kernel

# 下载linux kernel        https://www.kernel.org/
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.17.9.tar.gz
# 解压
tar -zxvf linux-5.17.9.tar.gz
cd linux-5.17.9
vim Makefile
# 在362行左右加入以下内容
ARCH              ?= arm
CROSS_COMPILE     ?=arm-linux-gnueabi-
# 下载荔枝派config文件
cd arch/arm/configs
wget https://files.cnblogs.com/files/twzy/linux-licheepi_nano_defconfig.zip
unzip linux-licheepi_nano_defconfig.zip 
# 回到linux根目录
cd ../../..
# 生成.config
make linux-licheepi_nano_defconfig
# 进入可视化配置
make menuconfig

PS:在menuconfig中设置开启RNDIS:

 Device Drivers  --->
        [*] USB support  --->
        <M> Inventra Highspeed Dual Role Controller (TI, ADI, AW, ...)
                MUSB Mode Selection (Dual Role mode)  --->
                *** Platform Glue Layer ***
            <M> Allwinner (sunxi)
                *** MUSB DMA mode ***
            [*] Disable DMA (always use PIO)
        USB Physical Layer drivers  --->
            <M> NOP USB Transceiver Driver
        <M>   USB Gadget Support  --->
            <M>   USB Gadget functions configurable through configfs
            [*]     RNDIS

设备树

​ 修改suniv-f1c100s.dtsi,路径为/arch/arm/boot/dts

#include <dt-bindings/clock/suniv-ccu-f1c100s.h>
#include <dt-bindings/reset/suniv-ccu-f1c100s.h>

# 在soc -> pio中末尾添加以下代码
mmc0_pins: mmc0-pins {
                pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";
                function = "mmc0";
            };
            
# 在SOC下添加以下代码            
mmc0: mmc@1c0f000 {
            compatible = "allwinner,suniv-f1c100s-mmc",
                     "allwinner,sun7i-a20-mmc";
            reg = <0x01c0f000 0x1000>;
            clocks = <&ccu CLK_BUS_MMC0>,
                 <&ccu CLK_MMC0>,
                 <&ccu CLK_MMC0_OUTPUT>,
                 <&ccu CLK_MMC0_SAMPLE>;
            clock-names = "ahb",
                          "mmc",
                          "output",
                          "sample";
            resets = <&ccu RST_BUS_MMC0>;
            reset-names = "ahb";
            interrupts = <23>;
            pinctrl-names = "default";
            pinctrl-0 = <&mmc0_pins>;
            status = "disabled";
            #address-cells = <1>;
            #size-cells = <0>;
        };

suniv-f1c100s-licheepi-nano.dts

# chosen后边添加
reg_vcc3v3: vcc3v3 {
        compatible = "regulator-fixed";
        regulator-name = "vcc3v3";
        regulator-min-microvolt = <3300000>;
        regulator-max-microvolt = <3300000>;
    };

# 文末添加
&mmc0 {
        vmmc-supply = <&reg_vcc3v3>;
        bus-width = <4>;
        broken-cd;
        status = "okay";
};

make -j4 然后就是长时间的等待了

rootfs

配置构建环境

sudo apt install qemu-user-static debootstrap -y
mkdir rootfs
cd rootfs
# 从华为源下载
sudo debootstrap --foreign --verbose --arch=armel  buster rootfs-debian http://mirrors.huaweicloud.com/debian/
cd rootfs-debian
# 挂载
sudo mount --bind /dev dev/
sudo mount --bind /sys sys/
sudo mount --bind /proc proc/
sudo mount --bind /dev/pts dev/pts/
cd ..
sudo cp /usr/bin/qemu-arm-static rootfs-debian/usr/bin/
sudo chmod +x rootfs-debian/usr/bin/qemu-arm-static
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs-debian /debootstrap/debootstrap --second-stage --verbose
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs-debian

配置文件系统

//vi /etc/apt/sources.list
//#注释掉原来的源,加这个
//deb http://mirrors.huaweicloud.com/debian buster main
apt update

上面最后一条命令chroot完成,此时可以用apt-get等命令给文件系统安装需要的软件包,修改root登录密码等操作:

apt install net-tools usbutils wpasupplicant udhcpc wireless-tools -y
apt install vim openssh-server htop pciutils -y
apt install python3 gcc python -y
# 修改密码
passwd root

//#添加用户
//groupadd <用户组>
//useradd -m -g <用户组> -s /bin/bash <用户名>
//passwd <用户名>

//#配置时区
//cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 添加SSH权限,添加PermitRootLogin yes
nano /etc/ssh/sshd_config
PermitRootLogin yes
可能会出现无法使用方向键的问题,输入bash命令进入bash窗口即可。

当所有的内容制作完成,就可以清理缓存,打包之后就可以替换你的文件系统了

apt clean
exit  #退出chroot
sudo rm rootfs-debian/usr/bin/qemu-arm-static

卸载刚在挂载的文件夹。

cd rootfs-debian
//sudo umount   dev/pts/
sudo umount   dev/
//sudo umount   sys/
//sudo umount   proc/
//sudo umount   dev/pts/

打包文件。

sudo tar -cvf ../rootfs.tar .    #要注意那个.  代表当前目录
cd ..
sudo cp rootfs.tar /media/ly/rootfs        #ly换成你的用户名
cd /media/ly/rootfs
sudo tar -xvf rootfs.tar
sudo rm rootfs.tar

tf卡可以插进planckpi了,使用串口连接上

#修改主机名
HOSTNAME=lycraftpi
echo $HOSTNAME > /etc/hostname
echo $HOSTNAME > /proc/sys/kernel/hostname
sed -i '/localhost/s/$/\t'"$HOSTNAME"'/g' /etc/hosts
#查看Debian版本号
cat /etc/os-release

启用swap

芯片的SiP内存只有64MB,大部分情况下都不够用,所以需要开启swap使用内存卡的一部分空间来作为交换内存。

通过free -m来查看下内存使用状况:

# free -m
              total        used        free      shared  buff/cache   available
Mem:             54          15           6           0          31          34
Swap:             0           0           0

创建一个自定义的目录/opt/images/

mkdir /opt/images/
#rm -rf /opt/images/swap

创建一个需要内存大小的文件,如512M:

dd if=/dev/zero of=/opt/images/swap bs=1M count=512

把创建的文件变成SWAP分区并启用:

mkswap /opt/images/swap
swapon /opt/images/swap

free -m看看SWAP是否生效,ok的话设置开机自动挂载swap:

nano /etc/fstab

添加一行:
/opt/images/swap swap swap defaults 0 0

QA

  • /bin/sh: 1: python: not found
ls -l /usr/bin/python*
sudo ln -s /usr/bin/python3 /usr/bin/python
  • No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'. Stop.
# https://blog.csdn.net/u010629326/article/details/73196311
vim .config
CONFIG_SYSTEM_TRUSTED_KEYS=""
  • BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
sudo apt-get install dwarves
  • error writing to /tmp/ccEmdmHW.s: No space left on device
虚拟机硬盘空间不够,扩大空间就好了
  • desktop系统下 管理员权限拖拽文件
在桌面的终端中输入sudo nautilus

参考

0

评论

博主关闭了所有页面的评论