jz2440s3c2440 jtag口、串口、usb devices 使用

article/2025/10/25 22:11:11

1.串口:

  串口类型: 针串口 、usb串口的使用

 1. usb 串口 插入电脑,计算机上设备管理器中其他设备下出现新设备 

设备管理器  中查看

2. 安装串口驱动 ,安装驱动以后 系统分配com4 串口


 3. windows下载串口连接软件 MobaXterm,连接串口,进入linux 

2.jtag烧写口:(和rk的烧写工具一个原理,速度很慢,开发时候推荐用下面的usb下载烧写)

  针口(开发板10针口),需要排线连接板子和eop 
  usb烧写器有哪些: jlink(付费的 )、op、 eop(jz2440标配)

  eop功能:  1. 烧程序  2. usb 转串口功能

 1. 排线连接 板子上10针口和 eop ,eop 连接电脑 usb 

2 .  eop 驱动  安装

问题:  widnows驱动签名,禁止签名,解决,Windows7 win10 系统如何强制禁用驱动程序签名 - Kooapk - 博客园


选择 D:\softpackage\weidongshagn\OpenJTAG 安装,需要安装 3 次 ,安装成功如下图
 
windows  安装 烧写软件

安装目录下带有oflash.exe

运行oflash  命令

 烧裸板程序   leds.bin  到  NandFlash

 NorFlash     :  可以烧 uboot 
 NandFlash  :  可以烧 裸板程序\uboot    
 可以从  Nor 或者 Nand启动, 开发板子上 有 开关

完成以后断开排线、 eop 从电脑上取下来  ,设置为nand ,  启动波动开关,重新上电重启

  烧uboot   u-boot.bin  到  Nor Flash  

完成以后断开排线  , 设置为nor启动 拨动开关, 重新上电 ,串口会输出倒计数,在0来之前 ,在串口中 输入空格 ,进入uboot 选项 ,如果不按 空格键, 那么会进入 默认linux 系统

  3 . usb devices :  

原理:windows通过 DNW 软件通过usb 传输文件到 uboot,  uboot具备usb下载功能, 在烧到nandflash中

优点 : 通过usb devices 传递传递文件到ubtoot, 然后安装, 速度快 ,  jtag 比较慢 

usb device 使用, 烧写  leds.bin   到  Nand Flash 

 1. 把uboot 烧到 nor Flash , 拨打nor启动开关,打开串口工具, 上电, 按下空格 ,进入uboot 菜单选项
 
2. usb device 驱动安装: 
 2.1.  usb 线 连接 设备与电脑 ,电脑上出现新设备  

 2.2.  安装驱动程序 : F:\工具和驱动\USB DNW
 启动 zadig-2.3.exe , 点击 Options/List All Devices

 3.   在串口 工具输入   [n] Download u-boot to Nand Flash    n 、  下载程序到Nand Flash

   n 表示 接收 usb 文件 并烧 写到 nand flash, 如果看不到这个菜单,输入menu


 使用 dnw_100ask.exe  从 windows 传递文件到 开发板

DNW  选择  USD Port- Transmit 发送文件,选择文件leds,bin  , 看串口工具平台, 烧写成功  

 

uboot 收到文件, lends.bin 安装成功,在烧到nand Flash 中 

设置  nand 启动,重新上电,运行  裸机程序

再次看到  leds.bin 闪烁效果 ,是3个灯光交替闪烁

4、 souce Insight使用

配置:   Options -> Document Options -> C Source File -> 加上*.c;*.h;*.S

SoucecInsight导入源码 : 

1、 Project   -- New Project --  填入项目名称、 项目目录 【这里填写的是索引目录名称】

2、  选择导入源码位置, shift 全选,  Add 

project - rebuild project  :  解析项目种的宏定义、 函数、变量等调用关系, 从而可以快速查找这些内容

那么就可以查看导入的源码了

双击: Untitled Project.PR 那么可以打开项目

然后进行 : Add and Remove Project Files   可以添加新文件,删除导入 的文件

3. Option-> Document Options -> Sreen Fonts -> 宋体(常规) 脚本(选择gb2312) 

 4. source insight 的窗口:

 

(右) 项目窗口: 项目中有哪些文件

主窗口: 显示当前打开文件的文件内容

符号窗口: 显示当期打开文件函数名、结构体、宏定义

上下文窗口: 光标放在主窗口的某一个函数上(变量、宏定义上) ,在 下面窗口可以看到相应的定义

在View 中可以打开关闭对应窗口

5. 显示行号:

View - > line number

6. 快速跳转到某一行:

Search - go to line

7. 高亮关键字 :

选项一个 关键词 Count ,鼠标右键, 高亮关键词,所有的Count 都会高亮

8. 查看函数定义:

双击函数: 可以在上下文窗口看到函数定义的源代码

按下ctrl+ 点击函数 调入函数

如何退回去:

9. 搜索:

ctrl + / 点击以后下面有显示  , 大小写忽略 这些

4  . 点亮 LED   ,嵌入式入门

4.1. 理论基础:

点亮led:
 芯片->引脚   输出高 电、低点
芯片可以跑程序,不需要系统
芯片与控制外界的方式通过引脚      引脚可以是GPIO | 可以是串口

 进制:
二进制: 001 0001 0001   2进制和10进制转化    8421法
八进制:       00  100  010  001          3位一组
               0  4     2    1          
16进制: 1    1     1                    4位一组

 c中进制定义:    int a= 0421   8进制
                  int a= 0x60   16进制
    
 把 bit 7,8  置1 
 int  b = 0x123 | (1<<7) | (1 <<8)  = 0x577 
 把 bit 7,8 清除 
 int  b = 0x123 &  (1<<7) &  (1 <<8) =  0x23 

 ubuntu 编译 32位可执行文件:
-m32 无法编译,安装 libc6库环境:
  sudo apt-get update
  sudo apt-get purge libc6-dev
  sudo apt-get install libc6-dev
  sudo apt-get install libc6-dev-i386
  
 gcc -m32 -o hello.o hello.c  : 32 为平台下,指针占4个字节  
 gcc -o hello.o hello.c : 64  位平台下,指针 8个字节  

  c 不同平台运行:
windows x86   
ubuntu  x86 : gcc编译 
arm 裸机:    arm-linux-gcc->烧写->运行

预编译->编译->汇编->链接
链接:  
   汇编生成obj文件   .o文件 
   系统库生成obj文件: 比如crt1.o、crti.o 、crtbegin.o 系统标准启动文件,一般应用程序是必须的
   链接libc库文件:  libc 库文件就是实现printf等函数
   
链接静态库,直接拷贝,  程序会变大 
链接动态库, 运行时动态加载 ,程序不会变大
   
    gcc -c -o hello.o hello.c 
    gcc -v -nostdlib -o hello hello.o:  会提示没有链接标准启动文件和标准库文件,链接失败
    -nostdlib 这个选项常用于 裸机/bootloader、linux 内核等程序, 它们不需要启动文件、标准库文件


  ** Ubuntu 18 安装arm-linux-gcc交叉编译

ubuntu共享环境搭建:Ubuntu 16.04 samba详细配置及使用(将linux中的共享目录设置成windows中的一个映射磁盘)..._weixin_30677475的博客-CSDN博客

 参考文章:Ubuntu 16.04 安装arm-linux-gcc交叉编译_HusterClearLove-CSDN博客, 使用编译好的,不要用apt-get

出现问题:

错误1:    
    arm-linux-gcc -c -o led_on.o led_on.S 
/opt/FriendlyARM/toolschain/4.4.3/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
 
 安装: sudo apt-get install lib32stdc++6

了解一下寄存器:

2440 寄存器分布:

cpu 的寄存器 有R1 R2 R3 R15 , 可以直接访问

GPIO 寄存器 , 有 GPFCON (配置寄存器) GPFDAT (控制寄存器) , 以地址访问

常用arm 指令:

为了实现上面功能,学习几天简单汇编指令LDR :   读内存 ,   LDR R0, [R1] :    读取R1 地址上数据保存到R0中 STR :  写内存 ,   STR R0,[R1] :  把 R0 的值 写到 地址 R1
bl  : 跳转bl main   跳到main函数,返回地址保存到lr 寄存器里面,返回地址就是下一条指令地址MOV:  MOV R0 , R1   把 R1 的值 赋值 给 R0 MOV R0,#0x100   R0=0x100 LDR R0,=0x12345678  : R0 = 0x123454678;  
伪指令: 并不存在这种指令,会被拆分 几条指令
add  : 加法add r0,r1,#4  :  r0 = r1+4 sub  : 减法sub  r0, r1,#4   r0 = r1 - 4 sub  r0, r1,r2   r0 = r1 - r2 
ldb 【出栈】 stm【入栈】: ldm:  都内存写入多个寄存器// 处理完成开始恢复现场,其实就是做中断返回,关键是将r0-r12,pc,cpsr一起回复ldmfd sp!, {r0-r12, pc}^例子: 
stmdb  sp!,{fp,ip,lr,pc}先减后存(存高地址) , 比如此时sp指向 4096, 首先sp-4 , 存高地址,pc=r15, pc存进去ldmia  ldmia sp,{fp,sp,pc}   首先读取后增加首先读取sp指向的栈地址内容fp, sp=sp+4 移动sp , 出栈! 含义: 
30000524:	e8bc000f 	ldmia	ip!, {r0, r1, r2, r3}  // 读30000708 上的数据,SDRAM 上的就是
//  sdRAM 没有数据,还没有初始化,必死无疑去读取 ,所以  不可以访问有初始值的数组 位置无关代码 ! 作用就是r0的值在ldm过程中发生增加或者减少写回到r0中去, r0的值会改变,上面r0不会改变
-如上读取ip内存地址的值,读取4个字节连续,读了以后ip地址的值改变stm :// 保存r0-r12和lr到irq模式下的栈上面stmfd sp!, {r0-r12, lr}

  总结:

ldm   出栈, 读取连续内存的值   ,   对应c的   int b = *p; 

stm  入栈, 写入连续内存的值,  对应c的  *p= 100;       

对应入栈,出栈   【 不同参数含义,首先移动pc 或者sp指针还是  首先放入一个字节数据 】

【韦 - arm画图理解】

编译汇编源码: led_on.S

/** 点亮LED2: gpf5*/.text
.global _start_start:/* 配置GPF5为输出引脚* 把0x400写到地址0x56000050*/ldr r1, =0x56000050ldr r0, =0x400	/* mov r0, #0x400 */str r0, [r1]/* 设置GPF5输出高电平 * 把0写到地址0x56000054*/ldr r1, =0x56000054ldr r0, =0	/* mov r0, #0 */str r0, [r1]/* 死循环 */
halt:b halt

    arm-linux-gcc -c -o led_on.o led_on.S
     arm-linux-ld -Ttext 0 led_on.o -o led_on.elf
    arm-linux-objcopy -O binary -S led_on.elf led_on.bin

 使用oflash烧录到 nandFlash中,断电、断开排序、设置nand启动,重新上电,效果如图所示:

        


http://chatgpt.dhexx.cn/article/Wg9aMWwa.shtml

相关文章

基于STM32设计的城市绿化云端监控系统(华为云IOT)

一、设计需求 1.1 项目背景 随着科技的蓬勃发展改变了很多传统行业的作业方式,当我们用移动支付代替现金交易时,当我们足不出户就能满足饥饿的身体时,我们的生活方式因为科技而发生了改变;同样科技也在改变着我们周围的点点滴滴,城市绿化养护亦是如此。 通过智慧控制系统…

FPGA的调试-虚拟JTAG

对于FPGA调试&#xff0c;主要以Intel FPGA为例&#xff0c;在win10 Quartus ii 17.0环境下进行仿真和调试&#xff0c;开发板类型EP4CE15F17。主要包括一下几个部分&#xff1a; - FPGA的调试-虚拟JTAG&#xff08;Virtual JTAG&#xff09; - FPGA的调试-在线存储器内容编辑…

Win7、Win8、Win10系统USB-Blaster驱动程序无法安装的解决办法

这篇博文是我转载dezhihuang的博文&#xff0c;原文名称和地址如下&#xff0c;并对内容做了适当调整&#xff1a; [原]Win7、Win8系统USB-Blaster驱动程序无法安装的解决办法 第一次用Markdown编辑博客&#xff0c;格式方面真是捉急啊&#xff01; Win7、Win8、Win10操作系…

avr+开发环境+linux,win7下avr单片机开发环境的搭建

操作系统&#xff1a;win7 professional x86 开发软件&#xff1a;avr studio 4.19 首先下载avr studio 4.19&#xff0c;因为貌似这是atmel官方最后支持jtag ice的开发环境。而且也就只有这个4的版本才支持win7&#xff0c;正好本人有个jtag&#xff0c;所以果断选择这个版本…

IBM Spectrum LSF RTM

IBM Spectrum LSF RTM IBM Spectrum LSF RTM是IBM Spectrum LSF环境的操作仪表板&#xff0c;提供全面的工作负载监视、报告和管理。它使集群管理员在日常活动中更加高效&#xff0c;并提供所需的信息和工具&#xff0c;以提高集群效率&#xff0c;实现更好的用户生产力&#…

IBM Spectrum LSF Suites

IBM Spectrum LSF Suites 高性能计算(HPC)不再仅仅适用于大型组织和技术熟练的用户。在当今竞争激烈的商业环境中&#xff0c;几乎每个行业都需要更短的设计周期和更高质量的结果&#xff0c;HPC适用于任何规模的组织。它是为那些需要从大量数据中进行分析和回答的用户而设计的…

LSF_SPAN

span字符串指定并行作业运行的位置。如果省略span, LSF将从可用的处理器中为作业分配所需的处理器。 一、语法 span[host1]&#xff1a;指示分配给作业的处理器必须位于同一个主机上。 span[blockvalue]&#xff1a;对并行作业来说&#xff0c;LSF将根据block size来分配slot…

集群调度LSF-学习笔记

集群-------多台设备 HPC集群----多台用于计算的设备 集群调度-LSF&#xff1a;LSF 是一种强大的工作负载管理平台&#xff0c;提供基于各种策略的智能调度功能&#xff0c;利用分布式的基础架构资源来提高整体的系统性能。用户通过 LSF可以实现集群间的负载均衡&#xff0c;扩…

IBM Platform LSF在IC行业内的使用

LSF在&#xff29;&#xff23;设计中有哪些值得匹配的 1、管理低利用率Job •针对short normal这类队列&#xff0c;查询20分钟以后&#xff0c;Job利用率依然很低的Job信息。 •$bjobs -u all -q short -o ‘id user queue stat ugroup first_host sla idle_factor slots …

IBM Spectrum LSF-手册

在所有规模的企业中&#xff0c;应用程序能力和数据量持续显著增长&#xff0c;推动了对更多计算能力和高性能管理和分析工具的需求。即使在传统的高性能计算(HPC)环境中&#xff0c;多个计算竖井、不均匀处理、设计周期泄漏和延迟结果也是常见的。面对日益严格的经济压力&…

LSF - 提交GUI应用到LSF无法运行,报错Failed to connect to socket /tmp/dbus-xxxxxxxxx: Connection refused

问题描述 提交GUI应用到LSF无法运行&#xff0c;如下所示 问题分析 这种GUI应用&#xff0c;不能以交互式的方式提交。提交命令换成bsub firefox即可。

LSF的使用方法总结

一、LSF 基本介绍 LSF&#xff08;Load Sharing Facility&#xff09;是IBM旗下的一款分布式集群管理系统软件&#xff0c;负责计算资源的管理和批处理作业的调度。它给用户提供统一的集群资源访问接口&#xff0c;让用户透明地访问整个集群资源。同时提供了丰富的功能和可定制…

IBM Spectrum LSF

IBM Spectrum LSF IBMSpectrum LSF系列是对用于高性能计算(HPC)环境的工作负载管理解决方案有一个完整的组合。具有全面的智能配套调度能力&#xff0c;它有助于确保正确的资源自动分配到正确的作业&#xff0c;最大限度地提高应用程序性能和效率。具有强大的管理功能和无与伦…

LSF - 集群概览

LSF - 集群概览 LSF - 术语与概念 Job状态 PEND 在队列中等待调度和调度的。RUN 发送到主机并运行。DONE 正常结束与零退出值。EXIT 以非零退出值结束。PSUSP 当作业挂起时挂起。USUSP 被用户挂起。SSUSP 被LSF系统挂起。POST_DONE 后处理完成&#xff0c;没有错误。POST_ER…

LSF集群搭建笔记

LSF-linux_amd64集群搭建记录 修改节点ip地址为静态ip安装并开启ssh服务修改主机名修改/etc/hosts文件(为了方便所有机器都要改)设置集群间ssh免密钥通信(如果想root间无需密码登陆需要设置了所有机器可以root登陆&#xff0c;并改root密码为固定密码&#xff0c;默认root密码每…

LSF集群基本概念介绍

集群的基本概念-作业 作业是集群中最重要的一个概念&#xff0c;用户通过提交作业申请集群计算资源&#xff0c;完成计算任务作业状态 • PEND &#xff08;待定&#xff09;- - 作业在队列中等待调度与分派 • RUN &#xff08;运行&#xff09;- - 作业已经被分派到节点机上…

LSF client安装

在master01节点添加&#xff1a; [rootmaster01 conf]# pwd /share01/app/lsf/conf [rootmaster01 conf]# ls cshrc.lsf lsf.cluster.nju_cluster1 lsf.shared perl.lsf ego lsf.conf lsf.shared.old profile.lsf lsbatch lsf.entitlement…

LSF Reordering

可通过[! ]重新排序作业调度主机。 假设&#xff1a; 主机resh1110h220 假设如上两个作业处于pending状态&#xff0c;在同一个调度周期内被调度器考虑&#xff0c;首先调度job1。 在调度周期的早期&#xff0c;通过获取集群中的所有主机或任何(-m)请求的主机列表中列出的主机…

LSF安装部署

前言 目前&#xff0c;市面上主流的HPC调度器分为LSF、SGE、Slurm、SGE四大类型&#xff0c;不同行业根据自身场景和不同调度器对应用支持力度的不同&#xff0c;往往会有不同的偏好&#xff0c;在芯片设计公司中最常用的是LSF LSF&#xff08;Load Sharing Facility&#xf…

关于LSF的高级用法

1、通过脚本查询Job的利用率和所占的Core数&#xff0c;从而管理低利用率的Job。 •通过脚本查询JOB的利用率和所占的CORE数&#xff0c;从而管理低利用率的JOB。 •低CPU利用率的JOB要特别小心&#xff0c;最可能存在2个原因&#xff1a;JOB缺少LICENSE导致等待&#xff1b;存…