jz2440 开发板玩法



话说,开发板的资料目录乱得让人头皮发麻,最后发现 开发板资料百问网精智JZ2440开发板4.3寸LCD版使用手册.pdf 是关键

驱动安装

驱动文件目录路径别太长,否则windows会报错:系统找不到指定的文件

百问网的新版 Jz2440 v3.0,插上电源线
Windows:

  1. OpenJTAG{禁用驱动签名} 排线口 (被识别成 两个USB<=>JTAG&RS232+一个USB Serial Port
  2. micro USB Serial 串口Prolific USB-to-Serial Comm Port 会被系统自动更新安装
  3. micro USB Devices 设备开机模式下的DNW驱动 SEC S3C2410X Test B/D
    找了很久,最后发现可以直接用开源工具 Zadig 全部一键安装。这里附上2.5版本zadig-2.5.zip

    附上:
    VMware的三种网络模式

驱动安装完成

排线是三个 OPENJTAG设备(USB Serial Port + 100ASK JTAG + 100ASK Serial Port )
靠近网线口的是 micro USB Serial 串口 Prolific USB-to-Serial Comm Port

在usb串口旁边的是 Micro USB Devices SEC S3C2410X Test B/D,这个设备偶尔会报错, 且会受VMware的影响,重开开发板/虚拟机就可以了(最好是插线开机后再开虚拟机)

可以调整COM端口号,双击设备,端口设置-高级,设置为COM1

编译 Bootloader 和操作系统

Bootloader选用 U-Boot,操作系统选用 Linux-arm
arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
交叉编译ARM版的U-Boot,及插桩打补丁

因为虚拟网卡出了问题,又刚好有个分区没用到,所以直接放uboot等源码文件并映射成虚拟磁盘给VMware用了。
注意:如果按任意键召唤不了uboot菜单,那么建议断开usb,先插电开机再串口调试,按开发板的RESET键重启

准备交叉编译环境

推荐做完以下步骤后,试试自己搭建交叉编译环境 https://crosstool-ng.github.io/docs/ 及其 GithubRepos
鉴于国内垃圾 GFW网络,在此提供官网下的无修改压缩包 crosstool-ng-1.24.0.zip

用资料提供的古老的ubuntu9.10.......,当然我在评论区放了Ubuntu18.04的使用方案

把这个arm-linux-gcc包解压到根目录,然后编辑环境变量

sudo tar -xjf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 -C /opt
sudo vi /etc/profile

在末尾添加如下

export PATH=$PATH:/opt/gcc-3.4.5-glibc-2.3.6/bin

ESC,输入:wq保存退出

刷新环境变量配置

source /etc/profile

**注: ** 如果之前使用了其他版本的gcc,那么应该关闭终端窗口后重新打开,并source /etc/profile,否则make里的gcc变量依然是之前的版本
如果希望自定义交叉编译环境,可以用export 设置仅在当然终端窗口生效的临时全局变量,或者在原 make 命令后接上如 CROSS_COMPILE=/opt/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- 用于指定编译器路径及其前缀

插桩编译 Uboot

tar xjf u-boot-1.1.6.tar.bz2
cd u-boot-1.1.6/
patch -p1 < ../u-boot-1.1.6_jz2440.patch

使用配置并一键编译

make 100ask24x0_config
make

或者指定交叉编译工具链前缀路径变量

make ARCH=arm CROSS_COMPILE=/opt/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- 100ask24x0_config
make CROSS_COMPILE=/opt/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- 

插桩编译 Linux2.6

tar xjf linux-2.6.22.6.tar.bz2
cd linux-2.6.22.6
patch -p1 < ../linux-2.6.22.6_jz2440.patch
make s3c2410_defconfig   #如果不想用现成的config_ok,可以基于uboot提供的2410自己修改(方案1)
cp config_ok .config     #直接使用100ask官方做好的配置(方案2)
make menuconfig          #配置菜单(可选)
make uImage

烧写开发板

  1. 用 oflash 烧写工具将U-boot.bin写入开发板的 Nor Flash (通过 OpenJTAG 排线接口)
  2. 通过 USB 串口 用终端命令和开发板交互(数字电路原理:信息本质都是通过电信号传输的,所以和网络ssh本质上也没有差别,和ssh一样操作命令就行) 记得设置波特率为115200并关闭流控(Flow Control),然后重开终端窗口 可以通过串口操作Uboot,利用Uboot提供的 [k]Download linux kernel uImage来将嵌入式操作系统如Linux2.6写入开发板

接上两根usb,用 终端工具 Mobaxterm新建串口终端,

,将开发板开机,在uboot 倒计时间内按空格键进入uboot菜单,选 [k]Download linux kernel uImage,然后打开 dnw_100ask.exe ,在标题显示USB:OK时点 USB Port->Transmit选择编译好的uImage烧写即可。

附上官方说明:

在uboot进入接收文件模式后,应注意如下

附上:jz2440在u-boot中通过网络方式烧录镜像的几种方法

  1. [b]Boot the system.

然后选b启动系统,会打印出Linux启动日志,最后的Linux日志还有报错Panic,开发板的屏幕也是花屏的,但至少成功写入系统了,后面再修修补补应该就可以了。


根据报错日志,初步怀疑是写入的yaffs2文件系统有问题

再搞搞,把开发板资料里提供的二进制文件 fs_mini.yaffs2 通过DNW协议烧写进去



可以看到成功进入Linux命令行了,说明我自己做的文件系统还有问题,那么,就暂时用开发板资料提供的吧

参考:【内核配置】一、从标准linux-2.6.22.6系统到ARM平台JZ2440开发板的linux系统的修改攻略

VMware网络配置

设置两个网卡(一个NAT,一个桥接)
编辑-虚拟网络编辑器,为NAT分配IP段,为桥接设置自动选择物理网卡

NAT固定IP参考:https://www.cnblogs.com/telwanggs/p/10882369.html

完善Linux环境

现在只刷入了一个内核,其他什么都没有。启动不了终端,也敲不了 ls 之类的命令

  1. 根文件系统、 添加 busybox 工具链及 libc 编程运行支持库
  • 内核只提供了内存文件系统等少量东西,如果没有实际的文件系统和运行库,那么就像Windows只有内核文件·C:Windowssystem32NTOSKRNL.EXE·及其最相关的几个文件,而没有C盘其他文件一样,连cmd都打不开。
  • BusyBox是一个适合嵌入式的 Linux 常用命令的精简集,提供了如 ls cp tar 等命令。
  • libc 是支持C语言运行的标准支持库,没有这个,连 printf 函数都用不了。(常见的libc有 glibc uClibc等)

参考:构造嵌入式Linux最小根文件系统及其 Busybox、libc运行库

  1. NFS 基于网络协议的文件系统(方便操作,不必每次都烧写文件系统)
    服务端(虚拟机系统)操作:
    安装NFS服务
    sudo apt-get install nfs-kernel-server
    编辑配置sudo vi /etc/exports并添加如下
/work/nfs_root               *(rw,sync,no_root_squash)
/home/xx/myCode               *(rw,sync,no_root_squash)

重启NFS服务器以生效配置
sudo service nfs-kernel-server restart
或者重新读取配置(如果有已挂载了NFS的客户端,就不能重启服务,而只能重新读取配置)
exportfs -arv

客户端(开发板)操作:
(192.168.123.74 是虚拟机系统桥接网卡模式下的IP,路由器列表里可以找到,也可以用 ip a 命令查看)

  • 树莓派挂载NFS目录
mount -t nfs 192.168.123.74:/home/xx/myCode/pi/driver/out /mnt -v
  • JZ2440作为客户端挂载NFS目录(JZ2440 比较旧,所以加些参数向下兼容)
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024,vers=3 192.168.123.74:/home/xx/myCode/devices/out /mnt -v


ps: -v是日志参数,便于人工排错

编程

  1. 给U-boot添加命令
    uboot1.1.6为例:在common目录下新建 cmd_hi.c 并把 cmd_console.c 的内容复制进去再依样画葫芦地修改,记得去掉 #ifdef CONFIG_CMD_CONSOLE 之类的宏定义。
    修改 common 目录下的 Makefile文件,在 COBJS 的定义后面增加一行 COBJS+= cmd_hi.o
    然后编译烧写即可
    测试:在u-boot启动时按任意键阻止uboot启动操作系统,然后按q退出菜单。在 OPENJtag>的命令框里输入 hi ,即可看到程序执行的结果。
    源码见评论区2

  2. 自己写驱动

MobaXterm 使用技巧

复制:只需要按住鼠标左键选中文字,即可自动复制。
粘贴:右击粘贴文字
传输文件:在侧边栏选 SCP 或 FTP,然后就可以看到了,支持拖拽。侧边栏上方的按钮也请多留意。

FTP 等服务器程序:

甚至还能扫端口...

原文地址:https://www.cnblogs.com/yucloud/p/jz2440v3.html