01 系统移植概述
系统移植概述 所谓Linux系统的移植,就是让Linux在自己的嵌入式板子上跑起来。但是不像STM32上移植个FreeRTOS那么简单,移植Linux还是挺复杂的,不仅包含了OS本身,还要移植bootloader和rootfs 为了让Linux系统能够运行,只需保证组成Linux最小系统的那些部分都被移植了就行了,具体地,包括以下几点(具体作用见另一个文档): BootLoader:常见的有U-Boot,本质上就是一个裸机程序,用于初始化一些外设,然后将Linux内核从Flash拷贝到DDR启动,内核启动后U-Boot就结束运行了。就相当于PC上的BIOS Linux内核:这里需要的不是Linux内核源码,而是编译好的内核镜像 根文件系统:一个目录,包含了Linux运行必备的一些文件和程序 只要移植了这3部分,那么一个基础的Linux系统就能跑起来了,而Ubuntu那些的Linux发行版也包含了这几部分,并进行了一定的扩充。 各种配置文件在编译移植完的uboot、内核、根文件系统时,大致流程都是: 1.加载适配此板子的默认(default)配置文件:make...
02 开发板网络设置
开发板上网 如果开发板要连接外网,且开发板是通过网线和笔记本连接的话,需要设置一些东西才行! 虚拟机网卡设置关于开发板uboot如何才能ping通ubuntu和pc机_如何让开发板和pc相互ping通-CSDN博客 1.虚拟机里面如果没有网络图标了 12sudo nmcli network offsudo nmcli network on 2.虚拟机桥接模式的那个网口默认就是线缆已断开,硬件上必须要连网线才可以 开启电脑的网络共享开发板连接外网失败ping: bad address ‘www.baidu.com‘_ping bad address-CSDN博客 设置路由和DNS信息解决开发板ping不通外网的问题_开发板网口直连不通,但是连交换机能通-CSDN博客
04 内核移植及分析
...
05 Kbuild
KbuildKbuild(Kernel Build System)是Linux内核的构建系统,用于管理和协调内核的编译过程(也被其他开源软件所采用,比如U-Boot、BusyBox等) 它基于GNU Make,但通过预定义一些变量和目标(比如obj-y、zImage、menuconfig等)进行了扩展以支持内核特有的需求,如模块化编译、跨平台支持和灵活的配置选项 Kbuild由内核中的所有Makefile、Kconfig以及scripts文件中的一些脚本组成 执行流程 根据用户(内核)的配置生成相应的.config文件 将内核的版本号存入include/linux/version.h 建立指向 include/asm-$(ARCH)...
04 交叉编译
交叉编译CMake交叉编译工具链sysroot 在使用==Cmake==搭建交叉编译环境时,需要指定sysroot,这个sysroot到底是什么呢? 在嵌入式开发中,sysroot是一个为了方便移植和交叉编译而创建的特殊目录。他包含了用于目标系统的头文件、库文件。在交叉编译时,我们通常不希望用宿主机的头文件和库文件,而仅使用sysroot中的头文件和库文件,以保证生成的东西能够在目标系统运行 未设置--sysroot 设置了--sysroot=dir后 头文件搜索路径 /usr/include dir/usr/include 依赖库搜索路径 /usr/lib dir/usr/lib 如何查看sysroot可以用以下方式查看sysroot 1${CC}...
03 tar工具
tar工具 tar是Ubuntu中的一个可执行文件,可以用来打包文件和目录,并生成.tar格式的文件,并且可以对打包后的文件进行压缩,生成.tar.gz等格式的文件 常见参数 参数 功能 -c 创建tar包 -x 解压tar包 -v 详细展示处理文件名 -f 指定输出文件名 -z 使用gzip压缩,.tar.gz 是常见的压缩文件扩展名 -j 使用bzip2压缩,.tar.bz2 是使用 bzip2 压缩的文件扩展名 -t 查看 tar 包中的文件列表 常见参数组合 -cvf:创建tar包 -xvf:在当前目录解压tar包 -xzvf:在当前目录使用gzip工具解压tar包
06 开机自启动
开机自启动 想要设置开发板的某程序开机时自启动,有多种方式 方式一 在/etc/rc.local 文件中添加自启动命令 例如,每次开机时要执行一个 hello.sh,这个脚本放在 / usr 下面,那就可以在 /etc/rc.local“中加一行 /usr/./hello.sh,或者 cd /usr/ && ./hello.sh 注意,你的命令应该添加在:exit 0 之前 添加完保存后设置 rc.local 可执行权限 方式二 在 /etc/init.d/ 目录下添加自启动脚本 Linux 开机的时候,会加载运行 /etc/init.d 目录下的程序,因此我们可以把想要自动运行的脚本放到这个目录下即可。系统服务的启动就是通过这种方式实现的。 1.添加完后务必设置文件的可执行权限 chmod +x filename 2.脚本必须以S开头,比如:S01syslogd 、S02klogd 、S02sysctl...
07 开发板部署nodejs
在开发板上运行node.js添加环境变量nodejs主要有2个可执行文件:node, npm他们都在同一个目录下,为了后面简单使用,需要把该目录添加到环境变量并开机自动设置 换源1npm config set registry https://registry.npmmirror.com 关闭ssl验证1npm config set strict-ssl false 安装依赖 由于js是个跨平台语言,所以只要给开发板移植了nodejs环境,就可以使用其丰富的前端代码了 安装依赖时有2种选项: 全局安装:npm install xxx -g 局部安装:npm install xxx,会在当前目录生成一个node_modules文件夹,新安装的依赖都在该目录下,切换到别的目录运行js就不行了
00 Windows需要进行的设置
Windows需要进行的设置网络设置虚拟机要通过桥接与PC的物理网卡相连,2者的IP得在一个网段 虚拟机设置VMWare和WSL2的Hyper V冲突了,必须关闭一个 12345# 关hyper-vbcdedit /set hypervisorlaunchtype off# 开hyper-vbcdedit /set hypervisorlaunchtype auto