009——服务器开发环境搭建及开发方法(上)

发布于:2024-03-29 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

一、环境搭建

1.1网络环境

1.2 文件传输环境搭建

1.2.1 nfs环境

1.2.2 tftp环境

1.3 源码环境搭建

1.4 代码托管

1.5 配置交叉编译工具链

二、 开发方式

2.1 内核、设备树、驱动

make mrproper

make 100ask_imx6ull_mini_defconfig​编辑

make zImage -j4

make dtbs

cp 内核和设备树到nfs

make modules

make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install​编辑

运行中替换内核、设备树和驱动


一、环境搭建

1.1网络环境

        由于基于liteos-a内核可能遇到的问题比较多,我们基于linux内核做服务器开发。

        先验证一下网络

没ip强制指定一下

给虚拟机添加双网卡,桥接网卡桥接到我的USB转网口上

然后ping一下windows不通,关闭防火墙再试一下

都通了

        那个dhcp自动分配ip要把网线接到路由器器上才行。咱们这面现在是直接连电脑

1.2 文件传输环境搭建

windows: 192.168.5.100

ubuntu :  192.168.5.10

板子:       192.168.5.110

1.2.1 nfs环境

mount -t nfs -o nolock,vers=3 192.168.5.10:/home/book/nfs_rootfs /mnt

 

1.2.2 tftp环境

        ubuntu的环境就不再说了,今天说说windows环境

设置目录和网卡的ip

具体什么样后面用的时候在展示。

1.3 源码环境搭建

这条长的不太容易打出来我复制到了下面。

repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_mini_linux4.9.88_release.xml --no-repo-verify

下完了

太大了,linux的平台代码还是太多了,估计后面鸿蒙也会这样。

1.4 代码托管

给我们的项目搞个目录放到码云上托管

1.5 配置交叉编译工具链

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihfexport PATH=$PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-g
nueabihf_sdk-buildroot/bin

这样就okl

sudo chmod -R go+rwx /home/book

        然后vscode垃圾我再也不用了,根本就无法跳转,阅读源码很不方便,弃v投s了好吧

        同步一下文件,完美

二、 开发方式

2.1 内核、设备树、驱动

make mrproper

  make mrproper 是 Linux 内核源代码树中的一个命令,用于清理内核构建目录。这个命令会删除所有编译生成的文件、配置缓存以及其他临时文件,确保下一次构建是从一个完全干净的状态开始的。

具体来说,make mrproper 会执行以下操作:

  1. 删除所有编译生成的对象文件、模块文件等。
  2. 删除 .config 文件(这是内核配置文件,记录了内核配置选项)。
  3. 删除 .config.old 文件(这是上一次的内核配置文件,用于比较配置变更)。
  4. 删除 .version 和 Module.symvers 文件(这些文件记录了内核版本和模块符号信息)。
  5. 删除各种临时文件和目录。

相当于是强化版的make clean

make 100ask_imx6ull_mini_defconfig

会直接报错,估计环境变量哪里没配置好

这个配置文件在arm下

但是老师的长这样 

book@100ask:~/100ask imx6ull mini-sdk/Linux-4.9.88$ make 100ask imx6ull mini defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
configuration written to .config

我们没有这些打印不知道会不会有问题

我对比了一下这里的.config和存在配置库里的内容一样,我就当他没问题先编译内核了

make zImage -j4

GG真坎坷,为什么会默认x86架构啊

用ARM编译还会报错离谱

        我真是麻瓜啊,被一个问题痛击了两次,之前就遇到过这个情况,在另一个shell设置环境变量,不关闭的话一个更早开启的shell是没有对应的环境变量的。

还是不行,找不到gcc命令

 

        坑爹啊,那到底是哪里的问题呢。

问题出现了,多打了个export

make dtbs

cp 内核和设备树到nfs

不知道为什么ls不好用了

把这些没用的删了也不行。

make modules
 

我丢啊,编译到一半虚拟机噶了

重启后没ip了,用ifconfig还配置不了,神奇。

sudo ip addr add 192.168.5.10/24 dev ens36  
sudo ip link set ens36 up

我又重启了下开发板现在ls好啦

编译也没问题了

make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install

把驱动模块都cp到nfs

        又卡死了,不知道为什么每次在开发板启动时去给nfs目录放东西开发板都会卡死。可能nfs卡住了。有可能是防火墙的问题,因为需要window做路由。防火墙关掉后果然好啦

运行中替换内核、设备树和驱动

cp /mnt/zImage /boot
cp /mnt/100ask_imx6ull_mini.dtb /root
cp /mnt/lib/modules /lib -rfd
sync

sync是写磁盘操作,防止要写入外存的数据没写入。

内核的编译时间是24年没问题了,但是时间不太对,仔细一看没改时区,我们改成上海就欧克了。

为什么是上海呢,大家在注册新虚拟机的时候有个选择时区,这里北京时间的话只能选上海。

本文含有隐藏内容,请 开通VIP 后查看