# linux_for_jz2440 **Repository Path**: draymond_z/linux_for_jz2440 ## Basic Information - **Project Name**: linux_for_jz2440 - **Description**: 在 JZ2440 开发板上移植 Linux 及做一下相关开发。 - **Primary Language**: C - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: https://blog.csdn.net/h451884098 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2022-12-06 - **Last Updated**: 2022-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一、交叉编译工具链的使用 ```shell sudo gedit ~/.bashrc # 在文件最后一行中加入 export PATH=$PATH:(你的路径)/linux_for_jz2440/toolchain/bin # 更新环境变量 source ~/.bashrc # 检查是否将路径加入到PATH中 echo $PATH # 检验 arm-zepunt-linux-gnueabi-gcc -v ``` # 二、编译 ```shell cd linux_for_jz2440/build # 初始化环境 sudo ./build.sh -i # 编译全部 ./build.sh -a ``` ​ 编译得到的 u-boot 文件、Linux 内核文件、设备树、根文件系统都在 linux_for_jz2440/build/output 目录下。 # 三、烧录步骤 ## 1、u-boot 烧录步骤 ​ 1)开发板连接 EasyOpenJTAG,开机。 ​ 2)打开 oflash.exe,在提示选项中依次选择 0、1、0。 ​ 3)输入 u-boot.bin 存放的路径(建议 oflash.exe 和 u-boot.bin放在同一个目录,这样直接输入 u-boot.bin 就可以了)。 ​ 4)在提示选项中依次输入 0、0,然后等待烧录完毕。 ## 2、Linux 内核烧录步骤 ​ 在 uboot 中设置好环境变量,在主机(也就是你所使用的的电脑)上使用 tftpd32 充当服务器。(建议将 uIamge 文件放在 tfpd32 文件夹内) ​ 无线网卡和有线网卡不能同时使用,需要禁用无线网卡,然后手动配置有线网卡的 ip 地址。 ```shell setenv ipaddr 192.168.0.110 # 开发板、主机(192.168.0.102)需在同一网段 setenv netmask 255.255.255.0 set ethaddr 00:0c:29:15:ee:31 setenv serverip 192.168.0.102 # tftp 服务器地址(即主机地址) ping 192.168.0.102 # 确认是否可以连通 # 开始烧录 tftp 0x30000000 uImage nand erase.part kernel nand write.jffs2 0x30000000 kernel $filesize ``` ## 3、根文件系统烧录步骤 ​ 在 uboot 中设置好环境变量,在主机(也就是你所使用的的电脑)上使用 tftpd32 充当服务器。(建议将 rootfs.yaffs2 文件放在 tfpd32 文件夹内) ```shell tftp 0x30000000 rootfs.yaffs2 nand erase.part file_system nand write.yaffs 0x30000000 file_system $filesize ``` ## 4、设备树烧录步骤 ​ 在 uboot 中设置好环境变量,在主机(也就是你所使用的的电脑)上使用 tftpd32 充当服务器。(建议将 rootfs.yaffs2 文件放在 tfpd32 文件夹内) ```shell tftp 0x30000000 jz2440.dtb nand erase.part device_tree nand write.jffs2 0x30000000 device_tree $filesize ``` # 四、具体的编译命令 ## 1、U-boot 编译步骤 ```shell make distclean make jz2440_defconfig make -j4 ``` ​ 编译生成的固件为 u-boot-2016.11/u-boot.bin。 ## 2、Linux 内核编译步骤 ```shell make distclean make jz2440_defconfig make -j4 uImage ``` ​ 编译生成的固件为 linux-4.10.17/arch/arm/boot/uIamge。 ## 3、根文件系统编译 ```shell mkyaffs2image rootfs rootfs.yaffs2 ``` ## 4、设备树的编译 ```shell make -j4 dtbs ``` # 五、注意事项 ## 1、git 无法提交设备文件和空目录 ​ Linux 有一些必要的目录。 ​ 为了 Busybox 可以正常运行,需要在 /dev 目录上创建两个设备文件:console、null。 ```shell mkdir proc tmp sys mnt dev cd dev sudo mknod console c 5 1 sudo mknod null c 1 3 ``` ## 2、调试 ``` # 对于不支持设备树的 tftp 0x30000000 uImage bootm 0x30000000 # 对于支持设备树的 tftp 0x30000000 uImage tftp 0x32000000 jz2440.dtb bootm 0x30000000 - 0x32000000 ``` ## 3、传输文件 ​ 如果开发板接收文件卡在 99%,建议使用 SecureCRT 尝试下。 ```shell # 等待 pc 传输文件给开发板 # 接收到的文件存放在根目录下 lrz # 从开发板将文件传输给 PC lsz file ```