求个没封的网站2022,做任务的网站源码,wordpress id97,关键词seo优化软件1.使用NXP官方linux内核
1.1 设置交叉编译工具链
1.1.1 百问网设置交叉编译工具链
百问网的交叉编译工具链是在home目录下的.bashrc文件 中设置的#xff0c;如下#xff1a; 使用命令vi ~/.bashrc进入文件#xff0c;在最末尾添加如下代码#xff0c;保存后即可完成设置…1.使用NXP官方linux内核
1.1 设置交叉编译工具链
1.1.1 百问网设置交叉编译工具链
百问网的交叉编译工具链是在home目录下的.bashrc文件 中设置的如下 使用命令vi ~/.bashrc进入文件在最末尾添加如下代码保存后即可完成设置。
export ARCHarm # 体系架构
export CROSS_COMPILEarm-buildroot-linux-gnueabihf- # 交叉编译工具
export PATH$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin # 交叉编译工具的路径补充什么是.bashrc文件 .bashrc文件是home目录下一个隐藏的shell文件用于储存用户的个性化设置。在bash每次启动时都会加载.bashrc文件中的内容并根据内容定制当前bash的配置和环境。
1.1.2 正点原子设置交叉编译工具链
正点原子的交叉编译工具链是在LInux源码的顶层Makefile中定义的如下 247 # CROSS_COMPILE specify the prefix used for all executables used248 # during compilation. Only gcc and related bin-utils executables249 # are prefixed with $(CROSS_COMPILE).250 # CROSS_COMPILE can be set on the command line251 # make CROSS_COMPILEia64-linux-252 # Alternatively CROSS_COMPILE can be set in the environment.253 # A third alternative is to store a setting in .config so that plain254 # make in the configured kernel build directory always uses that.255 # Default value for CROSS_COMPILE is not to prefix executables256 # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile257 ARCH ? arm258 CROSS_COMPILE ? arm-linux-gnueabihf-如上面代码所示在第257行和第258行分别定义了ARCH和CROSS_COMPILE这两个变量。
1.1.3 两者的区别
百问网在整个bash中执行make命令时都有效正点原子仅在当前Linux源码目录下执行make命令时有效。
1.2 下载Linux内核源码
下载Linux内核源码的两种方式
从NXP官网下载非常慢而且内核较大从百问网下载修改过的内核。
1.3 配置并编译Linux内核
和uboot一样在编译linux内核之前要先配置Linux内核每个板子都有其对应的默认配置文件这些默认配置文件保存在arch/arm/config目录中。此处使用的默认配置文件是NXP 官方I.MX6ULL EVK 开发板所使用的默认配置文件imx_v7_defconfig。
PS下面的命令是在内核源码的顶层目录下执行的
配置内核的命令如下
make clean # 第一次编译内核之前先清理一下
make imx_v7_defconfig # 使用默认配置文件配置Linux内核配置成功以后会提示生成.config文件如下
book100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make cleanCLEAN .CLEAN arch/arm/kernelCLEAN arch/arm/vdsoCLEAN cryptoCLEAN drivers/tty/vtCLEAN drivers/video/logoCLEAN firmwareCLEAN kernelCLEAN libCLEAN net/wirelessCLEAN usrCLEAN arch/arm/boot/compressedCLEAN arch/arm/boot/dtsCLEAN arch/arm/bootCLEAN .tmp_versions
book100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make imx_v7_defconfigHOSTCC scripts/basic/fixdepHOSTCC scripts/basic/bin2cHOSTCC scripts/kconfig/conf.oHOSTCC scripts/kconfig/zconf.tab.oHOSTLD scripts/kconfig/conf
#
# configuration written to .config
#配置成功后就可以编译了使用如下命令进行Linux内核和设备树的编译
make zImage -j4 # 编译Linux内核
make dtbs #编译设备树编译成功以后会生成对应的zImage镜像文件和设备树对应的.dtb文件两个文件所在的路径如下
zImage镜像文件的路径为 arch/arm/boot设备树对应的.dtb文件的路径为 arch/arm/boot/dts
1.4 Linux内核启动测试
1.4.1 启动方式
启动内核的方式有两种如下
方式:1将zImage镜像文件和设备树.dtb文件烧写进EMMC、SD卡、NAND中uboot从中读取进DDR中。方式2在uboot中使用tftp服务直接从服务器Ubuntu主机下载zImage镜像文件和设备树.dtb文件至DDR中。
本文使用第二种方式启动linux内核使用的前提是Ubuntu主机已经开启了tftp服务
1.4.2 启动内核
首先将上一小节编译的zImage和.dtb文件拷贝到ubuntu主机的tftp目录下命令如下
cp arch/arm/boot/zImage ~/tftpboot
cp arch/arm/boot/dts/imx6ull-14x14-evk.dtb ~/tftpboot然后在uboot的命令行中配置相关环境变量如下
setenv ipaddr 192.168.5.9 # 设置开发板的IP地址
setenv serverip 192.168.5.11 # 设置Ubuntu主机的IP地址
setenv gatewayip 192.168.5.1 # 设置网关
setenv netmask 255.255.255.0 # 设置掩码
saveenv设置完成之后ping 一下ubuntu主机确认是否设置成功 ping 192.168.5.11
FEC1 Waiting for PHY auto negotiation to complete.... done
Using FEC1 device
host 192.168.5.11 is alive出现以上界面就是配置成功了。 接着使用tftp服务从ubuntu主机下载内核镜像zImage和二进制设备树文件.dtb至开发板的DDR中并启动命令如下
tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk.dtb
bootz 80800000-83000000结果如下 tftp 80800000 zImage
Using FEC1 device
TFTP from server 192.168.5.11; our IP address is 192.168.5.9
Filename zImage.
Load address: 0x80800000
Loading: ###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################551.8 KiB/s
done
Bytes transferred 7499136 (726d80 hex)tftp 83000000 imx6ull-14x14-evk.dtb
Using FEC1 device
TFTP from server 192.168.5.11; our IP address is 192.168.5.9
Filename imx6ull-14x14-evk.dtb.
Load address: 0x83000000
Loading: ###504.9 KiB/s
done
Bytes transferred 36245 (8d95 hex)bootz 80800000-83000000
Kernel image 0x80800000 [ 0x000000 - 0x726d80 ]Starting kernel ...可以看到成功下载了内核镜像文件和二进制设备树文件。但是因为我们没有添加根文件系统所以会启动失败。
之后我们使用之前在EMMC中的根文件系统试着启动一下命令如下
# uboot中的环境变量bootargs保存着uboot传给Linux内核的参数常用的参数有
# console用来设置Linux终端也就是通过什设备来和Linux进行交互LCD屏或串口
# root用来设置根文件系统的位置
# rootfstype和root一起使用用于指定根文件系统类型
setenv bootargs consolettymxc0,115200 root/dev/mmcblk1p2 rootwait rw # 设置终端为串口1波特率为115200设置根文件系统的位置为mmcblk1设备的分区2中
saveenv
tftp 80800000 zImage # 使用tftp服务下载内核镜像
tftp 83000000 imx6ull-14x14-evk.dtb # 使用tftp服务下载设备树
bootz 80800000 - 83000000 # 启动内核结果如下
Welcome to imx6ull buildroot system !* SourceCode: https://gitee.com/weidongshan
* Support: https://support100ask.net
* Shop https://100ask.taobao.com/
* Login: name: root Passwd:
100ask login:可以看到板子成功启动了。
PS我的板子用这个内核和设备树可以启动但是启动后屏幕会闪板子会有滋滋滋的电流声个人分析应该是NXP官方EVK开发板的设备树和百问网IMX6ULL_PRO开发板不匹配。
2.在Linux中添加我们自己的开发板
2.1 添加开发板的默认配置文件
将arch/arm/configs目录下的imx_v7_defconfig重新复制一份命名为imx_myboard_defconfig作为我们自己开发板的默认配置文件命令如下
cp arch/arm/configs/imx_v7_defconfig arch/arm/configs/imx_myboard_defconfig2.2添加开发板的设备树文件
进入目录arch/arm/boot/dts中复制一份imx6ull-14x14-evk.dts,重命名为imx6ull-myboard-100ask.dts命令如下
cp arch/arm/boot/dts/imx6ull-14x14-evk.dts arch/arm/boot/dts/imx6ull-myboard-100ask.dts创建好之后还需要修改文件arch/arm/boot/dts/Makefile找到dtb-$(CONFIG_SOC_IMX6ULL)配置项在此项中加入我们自己的设备树imx6ull-myboard-100ask.dtb如下所示 510 dtb-$(CONFIG_SOC_IMX6ULL) \511 imx6ull-14x14-ddr3-arm2.dtb \512 imx6ull-14x14-ddr3-arm2-adc.dtb \513 imx6ull-14x14-ddr3-arm2-cs42888.dtb \514 imx6ull-14x14-ddr3-arm2-ecspi.dtb \515 imx6ull-14x14-ddr3-arm2-emmc.dtb \516 imx6ull-14x14-ddr3-arm2-epdc.dtb \517 imx6ull-14x14-ddr3-arm2-flexcan2.dtb \518 imx6ull-14x14-ddr3-arm2-gpmi-weim.dtb \519 imx6ull-14x14-ddr3-arm2-lcdif.dtb \520 imx6ull-14x14-ddr3-arm2-ldo.dtb \521 imx6ull-14x14-ddr3-arm2-qspi.dtb \522 imx6ull-14x14-ddr3-arm2-qspi-all.dtb \523 imx6ull-14x14-ddr3-arm2-tsc.dtb \524 imx6ull-14x14-ddr3-arm2-uart2.dtb \525 imx6ull-14x14-ddr3-arm2-usb.dtb \526 imx6ull-14x14-ddr3-arm2-wm8958.dtb \527 imx6ull-14x14-evk.dtb \528 imx6ull-14x14-evk-btwifi.dtb \529 imx6ull-14x14-evk-btwifi-oob.dtb \530 imx6ull-14x14-evk-emmc.dtb \531 imx6ull-14x14-evk-gpmi-weim.dtb \532 imx6ull-14x14-evk-usb-certi.dtb \533 imx6ull-myboard-100ask.dtb \534 100ask_imx6ull-14x14.dtb \535 100ask_imx6ull_mini.dtb \536 100ask_myir_imx6ull_mini.dtb \537 imx6ull-9x9-evk.dtb \538 imx6ull-9x9-evk-btwifi.dtb \539 imx6ull-9x9-evk-btwifi-oob.dtb \540 imx6ull-9x9-evk-ldo.dtb在第533行是添加的我们自己的开发板设备树。
2.3 编译测试
首先编译内核及设备树命令如下
make clean # 编译前先清理一下
make imx_myboard_defconfig # 使用默认配置 文件配置Linux内核
make zImage -j4 # 编译内核
make dtbs # 编译设备树编译成功后将zImage镜像文件和imx6ull-myboard-100ask.dtb文件拷贝到tftp目录下
cp arch/arm/boot/zImage ~/tftpboot
cp arch/arm/boot/dts/imx6ull-myboard-100ask.dtb ~/tftpboot接着在uboot命令行中使用如下命令下载镜像文件和dtb文件并启动
setenv bootargs consolettymxc0,115200 root/dev/mmcblk1p2 rootwait rw # 设置终端为串口1波特率为115200设置根文件系统的位置为mmcblk1设备的分区2中
saveenv
tftp 80800000 zImage
tftp 83000000 imx6ull-myboard-100ask.dtb
bootz 80800000-83000000