JZ2440 刚接触开发板的准备工作

2023-11-10 15:10

本文主要是介绍JZ2440 刚接触开发板的准备工作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、开发板接口接线工具

 开发板与PC机之间可以进行连接的接口通常有四个:串口、JTAG、USB、网络接口。而如今在PC端是没有JTAG或者接口的,因此可以使用转接板转换为并口或者USB口与PC段相连。
03-刚接触开发板的准备工作
 JTAG最初是用来对芯片进行测试的,JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。如今,JTAG接口还常用于实现ISP(In-System Programmer,在系统编程),对FLASH等器件进行编程。在2440中,当需要对NOR Flash进行烧写时,就需要用到JTAG接口进行烧录软件,而当软件是要烧录到NAND Flash时,使用串口与USB接口就可以操作。这里介绍NOR Flash、NAND Flah与SDRAAM的区别。
 ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。

芯片特点
 静态RAM(Static RAM/SRAM),是目前读写最快的存储设备,但是它也非常昂贵;
RAM动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,但从价格上来说DRAM相比SRAM要便宜很多;
DDR RAM(Date-Rate RAM)也称作DDR SDRAM(Synchronous Dynamic RAM),可以在一个时钟读写两次数据,这样就使得数据传输速度加倍。

 目前Flash主要有两种NOR Flash和NADN Flash。NOR Flash的读取和SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此众多NAND Flash的开发板除了使用NAND Flah以外,还有一块小的NOR Flash来运行启动代码。
 在2440开发板中,通常将uboot烧写在nor flash上作为引导程序,而linux kernel与根文件系统烧录在nand flash上,而这些代码会加载到SDRAM中运行。

二、在TQ2440中开发板程序的烧录

 一个linux文件系统的构成可分为硬件、bootloader、内核、根文件系统四个层次。首先要想硬件可以工作工作,需要有bootloader引导程序,它设置硬件相关参数以及软件变量,如设置中断变量、关闭看门狗、初始化串口、时钟等硬件参数,设置堆栈等。要完成这些操作,那么UBOOT代码就必须上电就能自动运行,通常将这些代码烧录在NOR Flash中,因为NAND Flash无法运行代码,而linux kernel、 root filesystem则烧录到nand flash中等待bootloader引导完成加载到SDRAM中运行。
1. 使用J-link烧写u-boot到Nor Flash
 编译uboot具体操作步骤为:
1、解压u-boot1.1.6,进入解压后的目录
2、打补丁
3、使用arm-linux-gcc3.4.5编译器编译

book/home/test/1_bare_metal/1_test$ tar xjf u-boot-1.1.6.tar.bz2 
book/home/test/1_bare_metal/1_test$ cd u-boot-1.1.6/
book/home/test/1_bare_metal/1_test/u-boot-1.1.6$ patch -p1 < ../u-boot-1.1.6_jz2440.patch
book/home/test/1_bare_metal/1_test/u-boot-1.1.6$ arm-linux-gcc -v
Reading specs from /work/tools/gcc-3.4.5-glibc-2.3.6/lib/gcc/arm-linux/3.4.5/specs
Configured with: /work/tools/create_crosstools/crosstool-0.43/build/arm-linux/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/work/tools/gcc-3.4.5-glibc-2.3.6 --with-float=soft --with-headers=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include --with-local-prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.5
book/home/test/1_bare_metal/1_test/u-boot-1.1.6$ make 100ask24x0_config
book/home/test/1_bare_metal/1_test/u-boot-1.1.6$ make 

烧写uboot:
1、JLink 的 USB 口接到电脑上,JTAG 口用排线和开发板的 JTAG 口相连, 开发板设为 Nor Flash 启动并上电。
2、启动 J-Flash, 它在“Windows 开始菜单->所有程序->SEGGER”里面。
3、选择菜单“File -> Open -> Open Project…”,打开光盘里的 s3c2440.jflash。
03-刚接触开发板的准备工作
4、选择菜单“Target -> Connect”
03-刚接触开发板的准备工作
5、选择菜单“File -> Open”,打开要烧写的二进制文件,比如 u-boot.bin,并且在“Start address”里输入 0。
6、选择菜单“Target -> Auto”即可自动烧写。
7、重启开发板,启动uboot。

##### 100ask Bootloader for OpenJTAG #####
[n] Download u-boot to Nand Flash
[o] Download u-boot to Nor Flash
[c] Re-scan Nor Flash
[u] Copy bootloader from nand to nor
[v] Copy bootloader from nor to nand
[k] Download Linux kernel uImage
[j] Download root_jffs2 image
[y] Download root_yaffs image
[d] Download to SDRAM & Run
[z] Download zImage into RAM
[g] Boot linux from RAM
[f] Format the Nand Flash
[s] Set the boot parameters
[b] Boot the system
[r] Reboot u-boot
[q] Quit from menu
Enter your selection:

2. 使用DNW和串口工具CRT烧写Linux内核和根文件系统
编译Linux内核的步骤为:
1、解压linux2.6.22,进入解压后的目录
2、打补丁
3、使用arm-linux-gcc3.4.5编译器编译

book/home/test/1_bare_metal/1_test$ tar xjf linux-2.6.22.6.tar.bz2 
book/home/test/1_bare_metal/1_test$ cd linux-2.6.22.6/
book/home/test/1_bare_metal/1_test/linux-2.6.22.6$ patch -p1 < ../linux-2.6.22.6_jz2440.patch

4、这里我是用的是TQ2440开发板,因此韦老师的linux内核源码不能直接使用在TQ2440开发板上,需要对LCD和DM9000两个驱动程序进行修改。
将TQ2440源码\drivers_and_test\17th_dm9000c\修改好的\dm9dev9000c.c复制到linux-2.6.22.6/drivers/net目录下;
修改其Makefile:obj-$(CONFIG_DM9000) += dm9dev9000c.o #dm9000.o
将TQ2440源码drivers_and_test\10th_lcd\4th\lcd.c复制到linux-2.6.22.6/drivers/video目录下,并修改其Makefile:obj-$(CONFIG_FB_S3C2410) += lcd.o #s3c2410fb.o
5、修改config_ok为.config
book/home/test/1_bare_metal/1_test/linux-2.6.22.6$ cp config_ok .config
6、编译make uImage,此事可能出现错误:

book/home/test/1_bare_metal/1_test/linux-2.6.22.6$ make uImage
Makefile:1449: *** mixed implicit and normal rules: deprecated syntax
/home/test/1_bare_metal/1_test/linux-2.6.22.6/Makefile:416: *** mixed implicit and normal rules: deprecated syntax
/home/test/1_bare_metal/1_test/linux-2.6.22.6/Makefile:1449: *** mixed implicit and normal rules: deprecated syntax
make[1]: *** No rule to make target 'silentoldconfig'。 停止。CHK     include/linux/version.h
make: *** No rule to make target 'include/config/auto.conf', needed by 'include/asm-arm/.arch'。 停止。

根据提示修改这两行Makefile:
在makefile中将416行代码:config %config: scripts_basic outputmakefile FORCE
改为:%config: scripts_basic outputmakefile FORCE
在makefile中将1449行代码:/ %/: prepare scripts FORCE
改为:%/: prepare scripts FORCE
再次编译,编译成功。

    ...
UIMAGE  arch/arm/boot/uImage
Image Name:   Linux-2.6.22.6
Created:      Fri Dec 29 20:05:44 2017
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1845828 Bytes = 1802.57 kB = 1.76 MB
Load Address: 0x30008000
Entry Point:  0x30008000Image arch/arm/boot/uImage is ready
book/home/test/1_bare_metal/1_test/linux-2.6.22.6$ 

7、在串口界面输入k命令下载uImage,使用dnw下载数据。

##### 100ask Bootloader for OpenJTAG #####
[n] Download u-boot to Nand Flash
[o] Download u-boot to Nor Flash
[c] Re-scan Nor Flash
[u] Copy bootloader from nand to nor
[v] Copy bootloader from nor to nand
[k] Download Linux kernel uImage
[j] Download root_jffs2 image
[y] Download root_yaffs image
[d] Download to SDRAM & Run
[z] Download zImage into RAM
[g] Boot linux from RAM
[f] Format the Nand Flash
[s] Set the boot parameters
[b] Boot the system
[r] Reboot u-boot
[q] Quit from menu
Enter your selection: k
USB host is connected. Waiting a download.

8、在串口界面输入y命令下载根文件系统,使用dnw下载数据。

##### 100ask Bootloader for OpenJTAG #####
[n] Download u-boot to Nand Flash
[o] Download u-boot to Nor Flash
[c] Re-scan Nor Flash
[u] Copy bootloader from nand to nor
[v] Copy bootloader from nor to nand
[k] Download Linux kernel uImage
[j] Download root_jffs2 image
[y] Download root_yaffs image
[d] Download to SDRAM & Run
[z] Download zImage into RAM
[g] Boot linux from RAM
[f] Format the Nand Flash
[s] Set the boot parameters
[b] Boot the system
[r] Reboot u-boot
[q] Quit from menu
Enter your selection: y
USB host is connected. Waiting a download.Now, Downloading [ADDRESS:30000000h,TOTAL:49769290]
RECEIVED FILE SIZE:49769290 (725KB/S, 67S)NAND erase: device 0 offset 0x260000, size 0xfda0000
Erasing at 0xffa0000 --   3% complete.
OKNAND write: device 0 offset 0x260000, size 0x2f76b40Writing data at 0x3033800 --  13% complete.49769280 bytes written: OK

9、启动开发板,查看效果。

Warning: firstuse finished 1
tsdev (compaq touchscreen emulation) is scheduled for removal.
See Documentation/feature-removal-schedule.txt for details.
Warning: TimeZone::data Can't create a valid data object for 'Europe/Oslo'
Warning: Unable to open /root/Settings/Categories.xml
Warning: could not register serverstarting pid 772, tty '/dev/s3c2410_serial0': '/bin/sh'
# 
# ls
bin         lib         mnt         root        tmp
dev         linuxrc     opt         sbin        usr
etc         lost+found  proc        sys
# 

03-刚接触开发板的准备工作
3. 使用tftp网络烧写Linux内核和根文件系统
 当开发板中安装好uboot后,还可以使用网络tftf下载linux内核与根文件系统,此时当tftp服务器为win7时,要保证开发板与PC机之间可以ping通。这里我采用开发板与PC机直接使用网线相连,PC机有线IP为192.168.2.20;开发板IP为192.168.2.10。

OpenJTAG> set ipaddr 192.168.2.10
OpenJTAG> set serverip 192.168.2.20
OpenJTAG> save
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done
OpenJTAG> printenv
bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0
bootdelay=2
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)
partition=nand0,0
mtddevnum=0
mtddevname=bootloader
ipaddr=192.168.2.10
serverip=192.168.2.20Environment size: 450/131068 bytes

03-刚接触开发板的准备工作
1、PC机tftp端设置,将需要下载的内核与根文件系统放在服务器目录下。
03-刚接触开发板的准备工作
2、开发板进入uboot命令行界面下载kernel:
tftp 30000000 uImage
mtdpart 查看分区信息
nand erase kernel
nand write.jffs2 30000000 kernel
3、下载根文件系统
tftp 30000000 fs_qtopia.yaffs2
nand erase root
nand write.yaffs 30000000 260000(root分区地址) 2fb6b40(大小)
4、开发板启动效果:
03-刚接触开发板的准备工作
4. 使用NFS服务器挂载内核和根文件系统
 使用NFS下载方法与tftp下载方式,大致相同,此时要确保开发板可以和虚拟机ubuntu能ping通。同时要设置虚拟机已经开启了nfs服务,并设置了挂载点:

book~$  cat /etc/exports 
# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
/work/nfs_root  *(rw,sync,no_root_squash)      #挂载目录

1、下载内核
nfs 30000000 192.168.1.123:/work/nfs_root/uImage
nand erase kernel
nand write.jffs2 30000000 kernel
2、下载根文件系统
nfs 30000000 192.168.1.123:/work/nfs_root/fs_qtopia.yaffs2
nand erase root
nand write.yaffs 30000000 26000 2f76b40

这篇关于JZ2440 刚接触开发板的准备工作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/383481

相关文章

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

开发板NFS挂载文件目录

文章目录 序NFS1. 安装 NFS 服务器和客户端在服务器上(NFS 服务器端)在客户端上(NFS 客户端) 2. 配置 NFS 服务器创建共享目录编辑 `/etc/exports` 文件启动 NFS 服务 3. 在客户端挂载 NFS 共享创建挂载点挂载 NFS 共享验证挂载 4. 设置开机自动挂载5. 解决权限问题 序 本节主要实现虚拟机(服务器)与开发板(客户端)通过N

未来工作趋势:零工小程序在共享经济中的作用

经济在不断发展的同时,科技也在飞速发展。零工经济作为一种新兴的工作模式,正在全球范围内迅速崛起。特别是在中国,随着数字经济的蓬勃发展和共享经济模式的深入推广,零工小程序在促进就业、提升资源利用效率方面显示出了巨大的潜力和价值。 一、零工经济的定义及现状 零工经济是指通过临时性、自由职业或项目制的工作形式,利用互联网平台快速匹配供需双方的新型经济模式。这种模式打破了传统全职工作的界限,为劳动

Smarty模板引擎工作机制(一)

深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解。 在没有使用Smarty模板引擎的情况下,我们都是将PHP程序和网页模板合在一起编辑的,好比下面的源代码: <?php$title="深处浅出之Smarty模板引擎工作机制";$content=

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据

第十章 【后端】环境准备(10.4)——Vagrant

10.4 Vagrant Vagrant 官网 Vagrant 镜像仓库 下载 安装 直接 install。 设置环境变量 Vagrant 默认将镜像保存在用户文件夹的 .vagrant.d 目录下,若用户文件夹在C盘,下载的镜像文件会大量占用C盘空间。设置环境变量 VAGRANT_HOME 后,Vagrant 会将镜像保存到环境变量指定的文件夹下。