1、linux下,一切皆是文件,在文件系统挂载之前,内核在内存中挂载虚拟的文件系统,用于运行主要的进程。之后再挂载硬盘上的文件系统,才正常启动。
2、linux文件系统制作工具,博主使用的是buildroot。其操作相对简单,而且方便。这里使用buildroot2018.2.11构建文件系统,并且在之后的应用编译时候,也需要用到它的交叉编译环境。
3、buildroot的官网:https://buildroot.org/downloads。可以使用命令wget https://buildroot.org/downloads/buildroot-2018.02.1.tar.gz,在ubuntu环境下直接获取源码。
4、将下载好的文件放入/usr/local/f1c200s/buildroot下,如果没有此路径可以使用mkdir命令创建。然后进行解压。
5、进入解压好的文件夹buildroot-2018.02.1下,执行make clean做一下清理。然后执行make menuconfig进行菜单配置。
a、将Target options->Target Architecture项配置为ARM(little endian),即将架构设置为ARM架构小端模式(大于一个字节的数据在内存中排列的方式,小端即低位字节放在内存低地址)。
b、接下来,Enable VFP extension support是设置硬件浮点,因为f1c200s不支持,所以不勾选。Target ABI是应用程序二进制接口,选择EABI,因为它支持硬软件浮点混用。Floating point strategy选择softfloat,使用软件浮点。ARM instruction set选择ARM,即架构。
c、退回上一级,在Build options中,将libraries设置为(both static and shared),支持静态库和动态库。(猜测可能和应用层软件运行过程中,动态加载库有关系)
d、再次返回上级,在Toolchain下,勾选Thread library debugging使能gdb调试功能,然后勾选
Enable C++ support
Enable Fortran support
Enable compiler link-time-optimization support
Enable compiler OpenMP support
Enable graphite support等五个选项,使能编译功能。
e、返回上级,在System configuration下,可以修改System banner来设置系统横幅,修改Root password来修改密码,这里博主没有做更改。
6、到这里,系统就配置完了,接下来保存退出,执行make。这里有一个报错
执行 echo “export set FORCE_UNSAFE_CONFIGURE=1” >> /etc/profile
然后执行source /etc/profile,就可以解决了,接下来是一段漫长的下载安装。
7、编译完成后,将output/image下的roots.tar,解压到TF卡的roots分区,将TF卡插入到开发板中上电,就得到一个linux的主机了。
报错处理:#error “Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib.”
进入路径:/usr/local/f1c200s/buildroot/buildroot-2018.02.1/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