eclipse软件仿真操作
1.编写程序代码(以SDRAM为例)
1.1 编写head.s汇编文件
.equ SDRAM_BASE, 0x30000000
.equ MEM_CTL_BASE, 0x48000000 .text
.global _start
_start:
bl disable_watch_dog
bl memsetup
bl copy_steppingstone_to_sdram
ldr pc,=on_sdram
on_sdram:
ldr sp,=0x34000000
bl main
halt_loop:
b halt_loop disable_watch_dog:
mov r1,#0x53000000
mov r2,#0x00
str r2,[r1]
mov pc,lr copy_steppingstone_to_sdram:
mov r1,#0x00
ldr r2,=SDRAM_BASE
mov r3,#*
:
ldr r4,[r1],#
str r4,[r2],#
cmp r1,r3
bne 1b
mov pc,lr memsetup:
mov r1,#MEM_CTL_BASE
adrl r2,mem_cfg_val
add r3,r1,#
:
ldr r4,[r2],#
ldr r4,[r1],#
cmp r1,r3
bne 1b
mov pc,lr .align
mem_cfg_val:
.long 0x22011110 @BWSCON
.long 0x00000700 @BANKCON0
.long 0x00000700 @BANKCON1
.long 0x00000700 @BANKCON2
.long 0x00000700 @BANKCON3
.long 0x00000700 @BANKCON4
.long 0x00000700 @BANKCON5
.long 0x00018005 @BANKCON6
.long 0x00018005 @BANKCON7
.long 0x008C07A3 @REFRESH
.long 0x000000B1 @BANKSIZE
.long 0x00000030 @MRSRB6
.long 0x00000030 @MRSRB7
1.2 编写led.c C程序文件
#define GPBCON *((volatile unsigned long*)0x56000010)
#define GPBDAT *((volatile unsigned long*)0x56000014) int main()
{
GPBCON=0x00000400;
GPBDAT=0x00000000; return ;
}
1.3 编写makefile文件
all:head.o led.o
arm-linux-ld -Ttext 0x30000000 led.o head.o -o sdram.elf
arm-linux-objcopy -O binary -S sdram.elf sdram.bin
arm-linux-objdump -D -m arm sdram.elf > sdram.dis
head.o:head.s
arm-linux-gcc -g -c head.s
led.o:led.c
arm-linux-gcc -g -c led.c
clean:
rm -f sdram.dis sdram.bin sdram.elf *.o
注:必须用all否则编译会报错
2.编译
打开eclipse->project->build all 没有错误可以进行下一步
3.连接JLink
dongry@d-linux:~$ cd arm-tools
dongry@d-linux:~/arm-tools$ ls
ARM-tools
dongry@d-linux:~/arm-tools$ cd ARM-tools
dongry@d-linux:~/arm-tools/ARM-tools$ ls
arm-linux-gcc-4.3.2.tgz eclipse-cpp-helios-SR2-linux-gtk.tar.gz
arm-linux-gdb-7.5 JLink_Linux_V434a
dnw JLink_Linux_V434a.tgz
dnw_usb.ko
dongry@d-linux:~/arm-tools/ARM-tools$ cd JLink_Linux_V434a
dongry@d-linux:~/arm-tools/ARM-tools/JLink_Linux_V434a$ ls
45-jlink.rules JLinkGDBServer libjlinkarm.so.4.34.1 start
JLinkExe libjlinkarm.so. README
dongry@d-linux:~/arm-tools/ARM-tools/JLink_Linux_V434a$ ./JLinkGDBServer //运行JLink
SEGGER J-Link GDB Server V4.34a JLinkARM.dll V4.34a (DLL compiled Aug ::)
4.配置eclipse
虫子->debug configureation->双击Zylin Embedded debug(Native)->单击New_configuration
配置1:main(添加.elf文件)

配置2:debugger

配置3:command(复制粘贴初始化脚本)

eclipse软件仿真操作的更多相关文章
- STM32软件仿真的一个注意点
最近才做的板子由于自己的粗心把串口线搞反了,还好只有两条,飞线解决,而且现在还只是样板,但是还是应该引以为戒,以后做硬件一定要谨慎. 今天同事出差把CAN分析仪拿走了,本来在开发板上调试好的程序不知为 ...
- 单片机Keil软件仿真与调试技巧
一.引言 单片机软件开发过程中,软件调试遇到的各种问题常令初学者感到不知所措.实际上.各种仿真开发软件的程序调试基本方法和技巧大同小异,掌握正确的程序调试基本技巧.对于排查这些程序错误问题可以起到举一 ...
- STM32 PWM的输出与Keil软件仿真
导读:PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值). PWM控制技术在逆变电路中应用最广,应用 ...
- 数字IC设计入门必备——VIM自定义模板调用与VCS基本仿真操作示例
一.前言 毕业论文答辩结束,闲下来写篇文章.芯片研发人员都在Linux系统下借助各种EDA工具和代码语言完成工作,因此提高代码开发效率,熟练运用开发工具是十分必要的.本文讲述VIM编辑神器的veril ...
- 用Excel做出比肩任务管理软件的操作技巧
用Excel做出比肩任务管理软件的操作技巧 在项目管理中,网上有各种各样的工具可以选择,到底用哪个,曾一度困扰着我.我是一个有轻度强迫症的人,总是喜欢试用各种各样的系统,以比较他们之间的不同,试图选择 ...
- stm32 MDK5软件仿真之查看io口输出
软件MDK5 stm32的pack 打开MDK,添加工程 一.首先找到Project的Options选项,里面的Debug选为Use Simulator,也就是选择软件仿真. 然后再Logic ...
- Uvision5不能进行软件仿真
Uvision5不能进行软件仿真不能进行软件仿真,报错: error 65: access violation at 0x40021000 : no 'read' permission(软件仿真出错) ...
- [eclipse] 三个操作技巧
[eclipse] 三个操作技巧 1.快捷键Ctrl+Shift+i:Debug调试中直接获取方法的返回值 在下图代码中,想知道getHost(),则在调试时运行完该句代码后,选中"urlU ...
- 1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project
使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-X ...
随机推荐
- K - Heavy Cargo dijkstar
来源poj2263 Big Johnsson Trucks Inc. is a company specialized in manufacturing big trucks. Their lates ...
- zoj 3871
貌似这道题某人已经扔给我一个多星期了(雾) 首先要知道这样一点:凸包的面积可以直接用线段的有向面积和求得. 自己口胡的证明:单纯一条线段自身的叉积就是到原点与这条线段构成三角形的面积吧,那么加加减减之 ...
- spring 核心
1 Spring 1.1 专业术语了解 1.1.1 组件/框架设计 侵入式设计 引入了框架,对现有的类的结构有影响:即需要实现或继承某些特定类. 例如: Struts框架 非侵入式设计 引入了 ...
- SpringBoot定时任务说明
1. 定时任务实现方式 定时任务实现方式: Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行 ...
- Linux wildcard
Linux中的通配符: 需要注意的是正则表达式与通配符完全是两个东西.wildcard代表的是bash操作接口的一个功能,而正则表达式是一种字符串处理的方法. 例如,'?',在通配符中表示一个字符,在 ...
- 清除 System.Web.Caching.Cache 以"xxx"开头的缓存
public static void ClearStartCache(string keyStart) { List<string> cacheKeys = new List<str ...
- 什么是Rollback Segment(已truncate和delete 命令为例)?
Rollback Segments是在你数据库中的一些存储空间,它用来临时的保存当数据库数据发生改变时的先前值,Rollback Segment主要有两个目的: 1. 如果因为某种原因或者其他用用户想 ...
- 11.1-uC/OS-III就绪列表
准备好运行的任务被放到就绪列表中, 如图6-1.就绪列表是一个数组( OSRdyList[]),它一共有OS_CFG_PRIO_MAX条记录,记录的数据类型为OS_RDY_LIST(见OS.H).就绪 ...
- 2、Flutter 填坑记录篇
1.前言 之前写了一篇文章关于 flutter 初体验的一篇,https://www.cnblogs.com/niceyoo/p/9240359.html,当时一顿骚操作,然后程序就跑起来了. 隔了好 ...
- C#基础加强(8)之委托和事件
委托 简介 委托是一种可以声明出指向方法的变量的数据类型. 声明委托的方式 格式: delegate <返回值类型> 委托类型名(参数) ,例如: delegate void MyDel( ...