【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(三)

简介: 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(三)

3. 对齐设置


对齐范例 : . = ALIGN(4); 表示从当前开始 4 字节对齐;


SECTIONS{
  . =0x30008000;
  . = ALIGN(4);
  .text :
  {
  *(.text)
  }
  . = ALIGN(4);
  .data :
  {
  *(.data)
  }
  . = ALIGN(4);
  .bss :
  {
  *(.bss)
  }
}





4. 变量



变量示例 : 变量保存之后, 可以再程序中用到变量;


-- 示例 :


SECTIONS{
  . =0x30008000;
  . = ALIGN(4);
  .text :
  {
  *(.text)
  }
  . = ALIGN(4);
  .data :
  {
  *(.data)
  }
  . = ALIGN(4);
  bss_start = . ;
  .bss :
  {
  *(.bss)
  }
  bss_end = . ;
}





5. 设置代码段首文件


设置首文件 :


-- 语法 : start.o(.text);


-- 示例 :


SECTIONS{
  . =0x30008000;
  . = ALIGN(4);
  .text :
  {
  start.o(.text)
  *(.text)
  }
  . = ALIGN(4);
  .data :
  {
  *(.data)
  }
  . = ALIGN(4);
  bss_start = . ;
  .bss :
  {
  *(.bss)
  }
  bss_end = . ;
}





五. eclipse 在线调试





1. eclipse 集成开发环境示意图




eclipse 集成开发环境示意图 :


-- 硬件 : 开发板, JLink;


-- 软件 : eclipse, GDB Server, JLink 软件;

image.png









2. 准备工作





(1) 格式化 nand flash



格式化 nand flash :  注意必须格式化 NandFlash 否则会出现不可预知错误;






(2) 硬件连接


硬件连接 :  JLink 连接, 串口连接, 电源连接, 开发板 nand flash 启动;







(3) 安装 JLink Windows 驱动


JLink Windows 驱动安装 : 买 JLink 时会带着这个安装盘, 安装 JLink Windows 驱动 才可以调试成功, 否则会在 Windows 这一关被挡下 导致连接不成功;






(3) 安装 gdb server


安装 arm-linux-gdb-7.5.tar.gz :


-- 解压 : tar -xvzf arm-linux-gdb-7.5.tar.gz 命令;


image.png


-- 查看 build-all 脚本 : 可以看到脚本执行流程是 解压 gdb-7.5.tar.gz, 然后生成 Makefile文件, 之后进编译安装到 /opt/arm-linux-gdb 目录下;


[root@localhost arm-linux-gdb-7.5]# cat build-all 
#/bin/sh
rm -fr gdb-7.5
rm -r /opt/arm-linux-gdb/
tar xvzf gdb-7.5.tar.gz
cd gdb-7.5
./configure --target=arm-linux --prefix=/opt/arm-linux-gdb/ -v
make && make install
cd /opt/arm-linux-gdb/

-- 进入 ddb 安装目录, 查看路径 :

image.png


-- 配置环境变量 : 将 /etc/profile 中的环境变量删除, 只在 ~/.bashrc 中配置;


export PATH=$PATH:/opt/arm-linux-gdb/bin/
export PATH=$PATH:/usr/local/arm/4.3.2/bin/

-- 环境变量顺序 : 注意前面的环境变量覆盖后面的, 交叉工具链中也有 arm-linu-gdb, 但是 /opt 下面的先配置, 因此事这个先生效;

-- 默认的 arm-linu-gdb : 是 7.5 版本的;

image.png



-- 交叉工具链中的 gdb : 6.8版本的, 无法进行 在线调试;










(4) 安装 JLink


安装流程 :


-- 解压文件 : JLink_Linux_V434a.tgz;


-- 进入cd JLink_Linux_V434a 目录, 拷贝文件 : 拷贝 libjlinkarm.so.4 和 libjlinkarm.so.4.34.1 到 /usr/lib 目录下 命令 cp -d libjlinkarm.so* /usr/lib -f, 拷贝 45-jlink.rules 到 /etc/udev/rules.d/ 下 命令 cp 45-jlink.rules /etc/udev/rules.d/;


[root@localhost ARM-tools]# tar -xvzf JLink_Linux_V434a.tgz 
JLink_Linux_V434a/
JLink_Linux_V434a/JLinkExe
JLink_Linux_V434a/libjlinkarm.so.4
JLink_Linux_V434a/start
JLink_Linux_V434a/JLinkGDBServer
JLink_Linux_V434a/libjlinkarm.so.4.34.1
JLink_Linux_V434a/README
JLink_Linux_V434a/45-jlink.rules
[root@localhost ARM-tools]# ls
arm-linux-gcc-4.3.2.tgz   dnw_usb.ko
arm-linux-gdb-7.5         eclipse-cpp-helios-SR2-linux-gtk.tar.gz
arm-linux-gdb-7.5.tar.gz  JLink_Linux_V434a
dnw                       JLink_Linux_V434a.tgz
[root@localhost ARM-tools]# cd JLink_Linux_V434a
[root@localhost JLink_Linux_V434a]# ls
45-jlink.rules  JLinkGDBServer    libjlinkarm.so.4.34.1  start
JLinkExe        libjlinkarm.so.4  README
[root@localhost JLink_Linux_V434a]# cp -d libjlinkarm.so* /usr/lib -f
[root@localhost JLink_Linux_V434a]# cp 45-jlink.rules /etc/udev/rules.d/


执行 JLinkGDBServer :



[root@localhost JLink_Linux_V434a]# ./JLinkGDBServer 
SEGGER J-Link GDB Server V4.34a
JLinkARM.dll V4.34a (DLL compiled Aug 31 2011 11:51:40)
Listening on TCP/IP port 2331
J-Link connected
Firmware: J-Link ARM V8 compiled Aug 24 2011 17:23:32
Hardware: V8.00
S/N: 17935099
Feature(s): RDI,FlashDL,FlashBP,JFlash
J-Link found 2 JTAG devices, Total IRLen = 5
JTAG ID: 0x07B76F0F (ARM11)





(5) 安装 eclipse




安装流程 :


-- 取消 默认 eclipse : 红帽6.3中默认安装了eclipse, 进入 /usr/bin 目录, 将 eclipse 快捷方式改为 eclipse.bak, 如果需要使用这个 eclipse, 执行 eclipse.bak即可;


[root@localhost ~]# cd /usr/bin/
[root@localhost bin]# mv eclipse eclipse.bak

-- 开始启动时会出错 : 不用管, 在此启动 eclipse 就会启动成功;

[root@localhost eclipse]# ./eclipse 
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00b8f8c1, pid=11165, tid=3077863104
#
# JRE version: 6.0_24-b24
# Java VM: OpenJDK Client VM (20.0-b12 mixed mode linux-x86 )
# Derivative: IcedTea6 1.11.1
# Distribution: Red Hat Enterprise Linux Server release 6.2 (Santiago), package rhel-1.45.1.11.1.el6-i386
# Problematic frame:
# C  [UTF-16.so+0x8c1]  gconv+0x3c1
#
# An error report file with more information is saved as:
# /root/arm/ARM-tools/eclipse/hs_err_pid11165.log
#
# If you would like to submit a bug report, please include
# instructions how to reproduce the bug and visit:
#   http://icedtea.classpath.org/bugzilla
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

已放弃 (core dumped)

-- 安装 CDT 插件 : 地址 http://opensource.zylin.com/zylincdt , 注意 三个都选择;







(6) 工程配置


配置工程 :


-- 导入工程 : 选择 菜单 "File" --> "New" --> "Makefile Project with Existing Code"




-- 取消自动编译 : 菜单 "Project" --> "Build Automatically" 选项;


-- 清除编译文件 : 选择 "Project" --> "Clean ...", 就会清除 .o .elf .bin 文件;


-- 编译文件 : "Project" --> "Build All" 选项, 同时 Console 中会有命令行输出;










(7) Debug配置



Debug 配置 :


-- 设置Main 选项卡 : 双击 Zylin Embedded debug (Native), 创建 Degug, 设置工程名, 设置调试程序, 注意选择 elf 格式的文件;




-- 设置 Debugger 选项卡 : 取消 Stop on startup at : main 选项, GDB debugger 程序选择为 arm-linux-gdb;




-- 设置初始化脚本 : 在 Commands 选项卡中设置 初始化脚本 , 注意下面的脚本是 ok6410 开发板的脚本, 其它开发板无法使用;



# tiny6410_config
# connect to the J-Link gdb server
target remote localhost:2331
# Set JTAG speed to 30 kHz
monitor endian little
monitor speed 30
# Reset the target
monitor reset
monitor sleep 10
#
# CPU core initialization (to be done by user)
#
# Set the processor mode
monitor reg cpsr = 0xd3
#config MMU
#flush v3/v4 cache
monitor cp15 7, 7, 0, 0 = 0x0
#/* flush v4 TLB */
monitor cp15 8, 7, 0, 0 = 0x0
#disable MMU stuff and caches
monitor cp15 1, 0, 0, 0 =0x1002
#Peri port setup
monitor cp15 15, 2, 0, 4 = 0x70000013
#disable watchdog
monitor MemU32 0x7e004000  =  0x00000000
monitor sleep 10
#disable interrupt
monitor MemU32 0x71200014  =  0x00000000
monitor MemU32 0x71300014  =  0x00000000
monitor MemU32 0x7120000C  =  0x00000000
monitor MemU32 0x7130000C  =  0x00000000
monitor MemU32 0x71200F00  =  0x00000000
monitor MemU32 0x71300F00  =  0x00000000
#set clock 
monitor MemU32 0x7e00f900  =  0x0000801e
monitor MemU32 0x7e00f000  =  0x0000ffff
monitor MemU32 0x7e00f004  =  0x0000ffff
monitor MemU32 0x7e00f020  =  0x01043310
monitor MemU32 0x7e00f00C  =  0xc2150601
monitor MemU32 0x7e00f010  =  0xc2150601
monitor MemU32 0x7e00f024  =  0x00000003
monitor MemU32 0x7e00f014  =  0x00200102
monitor MemU32 0x7e00f018  =  0x00000000
monitor MemU32 0x7e00f01C  =  0x14000007
#config sdram
monitor MemU32 0x7e00f120  =  0x00000008
monitor MemU32 0x7e001004  =  0x00000004
monitor MemU32 0x7e001010  =  0x0000040f
monitor MemU32 0x7e001014  =  0x00000006
monitor MemU32 0x7e001018  =  0x00000001
monitor MemU32 0x7e00101c  =  0x00000002
monitor MemU32 0x7e001020  =  0x00000006
monitor MemU32 0x7e001024  =  0x0000000a
monitor MemU32 0x7e001028  =  0x0000000c
monitor MemU32 0x7e00102c  =  0x0000018f
monitor MemU32 0x7e001030  =  0x0000000c
monitor MemU32 0x7e001034  =  0x00000002
monitor MemU32 0x7e001038  =  0x00000002
monitor MemU32 0x7e00103c  =  0x00000002
monitor MemU32 0x7e001040  =  0x00000002
monitor MemU32 0x7e001044  =  0x00000013
monitor MemU32 0x7e001048  =  0x00000013
monitor MemU32 0x7e00100C  =  0x00010012
monitor MemU32 0x7e00104C  =  0x00000b45
monitor MemU32 0x7e001200  =  0x000150f8
monitor MemU32 0x7e001304  =  0x00000000
monitor MemU32 0x7e001008  =  0x000c0000
monitor MemU32 0x7e001008  =  0x00000000
monitor MemU32 0x7e001008  =  0x00040000
monitor MemU32 0x7e001008  =  0x00040000
monitor MemU32 0x7e001008  =  0x000a0000
monitor MemU32 0x7e001008  =  0x00080032
monitor MemU32 0x7e001004  =  0x00000000
# Setup GDB for faster downloads
#set remote memory-write-packet-size 1024
set remote memory-write-packet-size 4096
set remote memory-write-packet-size fixed
monitor speed 12000
break _start
load

image.png


-- Debug 调试 : 执行 debug 调试, 再弹出的对话框中点击 yes;

image.pngimage.png

 


-- 此时可以单步调试 :

image.png






相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
6月前
|
Java Android开发
在Eclipse环境下调试Java程序
在Eclipse环境下调试Java程序
78 1
|
Java 关系型数据库 MySQL
SSM度假村管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
SSM 度假村管理系统是一套完善的信息系统,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术html div js 后端主要技术 SSM框架 java jdbc 数据库 mysql 开发工具 eclipse JDK1.8 TOMCAT 8.5
54 0
|
4月前
|
存储 Oracle Java
Java面试题:描述如何使用Eclipse或IntelliJ IDEA进行Java开发?
Java面试题:描述如何使用Eclipse或IntelliJ IDEA进行Java开发?
49 0
|
5月前
|
开发工具 Android开发 git
合作开发(Eclipse+git +码云)
合作开发(Eclipse+git +码云)
71 0
|
6月前
|
Java 关系型数据库 BI
基于Java Swing 开发的网吧管理系统【eclipse和idea两个版本运行源码】
基于Java Swing 开发的网吧管理系统【eclipse和idea两个版本运行源码】
124 0
|
6月前
|
设计模式 前端开发 Java
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
91 0
|
6月前
|
Android开发
Eclipse工具使用技巧
Eclipse工具使用技巧
|
Java 关系型数据库 MySQL
SSM宾馆客房管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
SSM 宾馆客房管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术 bootstrap.css jquery 后端主要技术 SSM 数据库 mysql 开发工具 eclipse JDK1.8 TOMCAT 8.5
63 0
SSM宾馆客房管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
|
Java 关系型数据库 Apache
Apache Maven简介&安装及系统坏境配置&eclipse配置Apache Maven---详细介绍
Apache Maven简介&安装及系统坏境配置&eclipse配置Apache Maven---详细介绍
160 0
|
Java 关系型数据库 MySQL
SSM培训报名管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
SSM 培训报名管理系统是一套完善的信息系统,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术html div js 后端主要技术 SSM框架 java jdbc 数据库 mysql 开发工具 eclipse JDK1.8 TOMCAT 8.5
54 0

推荐镜像

更多