zoukankan      html  css  js  c++  java
  • 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 等服务器程序:

    甚至还能扫端口...

  • 相关阅读:
    java安装jdk时,执行javac出错
    servlet入门
    maven安装出错原因分析
    备份整个schema的数据
    备份db2schema数据
    UltraEdit使用技巧
    获取数据库分组后的最大值
    什么是jsp
    linux 上使用FTP传输文件
    关于opencv进行rtsp取流播放视频特别慢的问题记录
  • 原文地址:https://www.cnblogs.com/yucloud/p/jz2440v3.html
Copyright © 2011-2022 走看看