【一】f1c100s开发环境搭建移植系统

说明

linux小白的开发笔记,防止以后忘记了,大家可以参考一下。
如果下面给出的命令不熟悉的话建议百度一下。

笔者使用的linux发行版是ubuntu-20.04.6其他版本的应该也可以但是可能会遇到很多莫名其妙的错误。

以荔枝派nano为例,开始移植从TF卡启动的buildroot根文件系统。TF卡大小也不用太大,应该有16G都够用了,因为移植完也才用了1个G不到,剩下的做应用开发估计都绰绰有余了。

依赖工具

刚安装完系统,可以使用以下命令更新包管理

sudo apt update

由于在虚拟机里面不好操作,可以使用mobaxterm工具来远程ssh登录,需要安装这两个工具登录ssh,然后使用命令ifconfig查到的IP地址就可以用mobaxterm登录了。

sudo apt install ssh net-tools -y

接下来才开始安装依赖工具,需要用到的是这些vim git gcc make cmake rsync build-essential bc swig libncurses-dev libpython3-dev libssl-dev python3-distutils android-tools-mkbootimg python python-dev flex bison
使用以下命令安装

sudo apt install vim git gcc make cmake rsync build-essential bc swig libncurses-dev libpython3-dev libssl-dev python3-distutils android-tools-mkbootimg python python-dev flex bison -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 tar -xvf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz -C /opt/
  • 配置环境
sudo vim /etc/bash.bashrc
  • 在文件的最后插入如下代码
PATH="$PATH:/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin"
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
  • 更新环境文件
source /etc/bash.bashrc
  • 验证
arm-linux-gnueabi-gcc -v

如果你们也和我一样有一点强迫症 那我觉的这个事情太酷辣,可以把下载的压缩文件删了。

TF卡分区

这个简单说一下,网上有很多教程,这一步不使用mobatexrm工具,直接进到虚拟机里面因为图形化操作比较方便。

  • 安装分区工具
sudo apt install gparted -y

在所有应用里面找到GParted并打开,右上角有个下拉框,切换到/dev/sdb,然后下面就是分区情况先把所有分区都删除,每个分区都这样操作除了unallocated分区,右键选择Delete,如果选不了就选unmount再Delete,删完后记得点击上面的绿色钩子,最后会剩下一个unallocated分区。

接下来开始重新分区,右键unallocated分区选择new,在New size里面填入32,在File system里面选择fat16,点击add即可生成第一个分区。再次右键unallocated分区,直接点击add就可以生成第二个分区了,完成后还需要点击上面的绿色钩子。第一个分区放内核文件和设备树文件,第二个分区放根文件系统。

u-boot移植

  • 先在~/目录下新建一个文件夹,并且进入这个目录
mkdir f1c100s
cd f1c100s
  • 从github上获取u-boot由于github不好上所以可以用加速网站,只需在https://github.......的前面加上这个加速网站就可以了https://mirror.ghproxy.com/,克隆u-boot
git clone https://mirror.ghproxy.com/https://github.com/Lichee-Pi/u-boot.git -b nano-v2018.01
  • 接下来就是进入u-boot目录,查看分支,选择分支,选择完后以后每次进来都不用再选
cd u-boot
git branch -a
git checkout nano-lcd800480
  • 配置图形化配置文件
make licheepi_nano_defconfig
  • 进入图形化配置界面
make menuconfig

懒得截图了,配置成下面这样就可以了,该输入y的输入y,该输入参数的输入参数,注意在删除参数时直接退格是不行的,需要按住ctrl键再退格,()里面的就是参数需要复制粘贴进去

[*]Enable boot arguments
    (setenv bootargs console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw)
[*]Enable a default value for bootcmd
    (load mmc 0:1 0x80008000 zImage;load mmc 0:1 0x80c08000 suniv-f1c100s-licheepi-nano.dtb;bootz 0x80008000 - 0x80c08000;)

  • 编辑这个文件,里面有内容需要注释掉
vim include/configs/suniv.h

注释内容如下,加一个#if 0 #endif就可以了,或者直接删掉也行。

#if 0
#define CONFIG_VIDEO_LOGO
#define CONFIG_VIDEO_BMP_LOGO
#define CONFIG_BOOTCOMMAND   "sf probe 0 60000000; "    \       
                     "sf read 0x80C00000 0x100000 0x4000; "  \
                     "sf read 0x80008000 0x110000 0x400000; " \
                     "bootz 0x80008000 - 0x80C00000"
#endif
  • 可以编译了,-j4为多线程编译可以加快编译的速度,j多少取决于你有多少个cpu可以使用nproc命令查看有多少个,我的是4个所以就是j4,大概需要编译1-2分钟,编译完成后目录下会有一个这样的文件u-boot-sunxi-with-spl.bin
make -j4
  • 插入TF卡烧录u-boot
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

kerner移植

  • 回到~/f1c100s目录下
cd ~/f1c100s
  • 这一步开始下载内核文件,需要手动下载,发现用git克隆的话会出错暂时不知道怎么解决,源码链接如下
https://github.com/Lichee-Pi/linux/tree/nano-5.2-tf

在window下下载,然后通过mobaterm上传到虚拟机的f1c100s目录下。

  • 解压缩并且进入目录
unzip linux-nano-5.2-tf.zip
cd linux-nano-5.2-tf
  • 下载图形化配置文件并且覆盖掉原本的文件
wget http://dl.sipeed.com/LICHEE/Nano/SDK/config
cp config .config
  • 先进入配置再直接退出保存,然后开始编译,大概需要编译3-4分钟
make menuconfig
make -j4
  • 插入TF卡烧录内核

把分区1挂载到/mnt目录下

sudo mount /dev/sdb1 /mnt

复制内核文件到/mnt目录下

sudo cp arch/arm/boot/zImage /mnt/

复制设备树编译文件到/mnt目录下

sudo cp ./arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb /mnt/

保存

sync

取消挂载

sudo umount /dev/sdb1

buildroot移植

  • 回到~/f1c100s目录下
cd ~/f1c100s
  • 下载buildroot文件并解压
wget --no-check-certificate https://buildroot.org/downloads/buildroot-2017.08.tar.gz
tar xvf buildroot-2017.08.tar.gz
  • 进入目录
cd buildroot-2017.08
  • 进入图形化配置界面
make menuconfig

配置成下面这样就可以了,System hostname下的选项第一个是主机名,第二个是欢迎界面语,第三个登录密码。

Target options
    Target Architecture (ARM (little endian))
Toolchain
    C library (glibc)
    [*] Enable C++ support
    [*] Enable Fortran support
    [*] Enable compiler link-time-optimization support
    [*] Enable compiler OpenMP support
    [*] Enable graphite support
System configuration
    (lmnb) System hostname
    (Welcome to LMNB) System banner
    (123456) Root password

  • 尝试编译
make

很遗憾报错了,报错内容大概

省略
make[5]: *** [Makefile:1915: fseeko.o] Error 1
省略
freadahead.c: In function ‘freadahead’:
省略

解决办法

cd output/build/host-m4-1.4.18
sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
cd -
make

需要联网编译,编译了1个多小时终于编译完了,荔枝派官网上说编译这个好像不能用-j4。

  • 插入TF卡烧录根文件系统
sudo mount /dev/sdb2 /mnt
sudo tar xvf output/images/rootfs.tar -C /mnt/
sync
sudo umount /dev/sdb2

交叉编译第一个程序

注意这个编译程序的需要用根文件系统里面自带的交叉编译工具,用前面配置的那个是不行的

同样的打开前面配置环境的文件,在PATH="$PATH:/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin"的后面加上:~/f1c100s/buildroot-2017.08/output/host/bin

也就是这样PATH="$PATH:/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin:~/f1c100s/buildroot-2017.08/output/host/bin",再更新环境文件就可以了

随便一个目录下都行创建一个hello.c文件,写入代码

#include <stdio.h>

int main(int n, char **p)
{
        if(n > 1)
        {
                printf("Hello");
                for(int i=1;i<n;i++)
                {
                        printf(" %s", p[i]);
                }
                printf("\n");
        }
        else
        {
                printf("Hello world!\n");
        }
        return 0;
}

然后编译,目录下就会生成一个hello执行文件

arm-buildroot-linux-gnueabi-gcc -o hello hello.c

再次像烧录根文件系统那样烧录hello文件到TF卡的第二分区里面

sudo mount /dev/sdb2 /mnt
sudo cp hello /mnt/root/
sync
sudo umount /dev/sdb2

荔枝派nano插入tf卡上电通过串口0调试,对应引脚l连接usb转ttl,就连这两根线就行,用usb供电

PE0 ==> TX
PE1 ==> RX

然后输入用户名root,再输入密码123456即可登录
输入ls命令可查看到目录下有个hello文件,执行它还不行,需要权限输入chmod +x hello命令即可。

#./hello
#Hello world!
#./hello lmnb66
#Hello lmnb66

总结

参考:CSDN,百度,b站,荔枝派官网,挖坑网

很明显这样烧录程序太麻烦了,后面介绍如何通过usb转虚拟网卡,实现ssh登录,然后可以通过tftp上传程序文件了或者在mobatexrm也可以。
断更了,先忙一阵子毕设

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值