yplin27 发表于 2007-12-17 09:31:18

分享一些WINARM的资料,寻找同行者

这是我花了一个星期时间找到的最好的资料了,均来自网络,如有侵权,请指出

make中文手册
点击此处下载ourdev_189415.rar(文件大小:880K)

ld中文资料
点击此处下载ourdev_189416.rar(文件大小:43K)

as中文资料
点击此处下载ourdev_189417.rar(文件大小:177K)

不知道论坛里用winarm的兄弟多不多,希望能分享经验,winarm的中对于44b0x的资料似乎很难找

ps:花了一个多星期,第一个最简单的汇编程序还是跑不起来,用gdb调试可以运行,但是板子没反应(改到ads下,同样也是用gdb调试就可以),不知道大家有没有遇到这种情况

yplin27 发表于 2007-12-17 09:38:45

还有个软件,ocdremote,用来连接gdb与wiggler的,版本有点旧
点击此处下载ourdev_189432.rar(文件大小:2.75M)

ATmega32 发表于 2007-12-17 09:47:04

要等WinARM支持cortex-m3,再去弄WinARM。

Forever 发表于 2007-12-17 09:47:56

看看,多谢楼主了

pldjn 发表于 2007-12-17 16:39:51

非常支持WINARM,到现在还不知道用什么软件进行调试.看有的网站上用KEIL调试.那还能体现出WINARM的优势吗!

yplin27 发表于 2007-12-17 20:55:10

WINARM是用GDB来调试的,一个很大的优势是GCC,GDB等与Linux的关系,对于进行嵌入式Linux的开发调试比较好。缺点是在国内使用的人可能不多(似乎大家都在用ads,keil),交流的人少,入门比较复杂。

    花了一个多星期时间终于有点眉目了,今天终于用汇编点亮了几个led。

bozai 发表于 2007-12-18 00:06:01

我在用winarm,芯片是7s256, 自带的例子里有这个芯片的程序,所以用起来比较方便。

xiejun 发表于 2007-12-18 20:11:37

一直没搞懂那个GDB是怎么调试的

yplin27 发表于 2007-12-18 21:19:54

GDB有好几种调试方法,我用的是gdb+ocdremote+wiggler,用ocdremote来做代理

具体操作:

安装cygwin,安装ocdremote(软件在一楼),重启;

接wiggler,上电(是wiggler,并非sdt jtag)

运行cygwin,输入 /usr/local/bin/ocdremote.exe -c ARM7 -p 8888 -d WIGGLER 运行ocdremote,(可以写个脚本简化一下)

运行arm-elf-insight.exe 打开elf文件,然后Run->connect to target target选remote/tcp localhost:8888 ok

Run->download 然后就可以如一般软件一样调试了

以上是我用的调试方法,如有错漏请指出

R28FA 发表于 2008-1-27 19:21:14

yplin27兄有什么联系方式吗,或者大家有群类的交流吗,我想学,感觉很困难,ocdremote都没装上

zm2002 发表于 2008-2-2 17:57:03

如果你要开发性能高一点的产品建议还是不要用gcc编译器编译arm程序,效率比IAR和Keil的编译器低很多的。似乎不支持arm的条件指令

a += b>>4;这样的代码也不能优化。自己可以对比测试一下。

gingin 发表于 2008-2-2 18:57:37

楼上说的情况有谁测试过没?

bucker 发表于 2008-2-13 20:21:58

想请教一下WinARM的MakeFile怎么做啊,原来WinaAvr是有专门的软件来实现的。还有,就是例程也无法编译,总是报告MakeFile文件有语法错误。

kebaojun305 发表于 2008-2-13 22:41:41

多谢楼主啊,我正在看关于MAKE的文件。这个资料不错。

yplin27 发表于 2008-2-13 23:01:50

to【12楼】 bucker
可以参考上面的资料对例子提供的makefile进行修改,一般一个工程需要一个makefile和一个linkscript文件

bucker 发表于 2008-2-14 22:18:02

谢谢楼主:
makefile是不是参照下载的make.pdf就可以啦

linkscript是什么呢?看来我还没有找到门那。

yplin27 发表于 2008-2-15 11:43:49

to 楼上:
上面的make.pdf介绍的是标准的makefile写法,不过我也没有全部看完,avr的makefile只要了解那些规则应该就比较好理解了

Linker-Script主要作用是描述rom与ram的分配,以及在链接时代码段与数据段的位置分配问题,可以参考上面的ld资料

banyan_city 发表于 2009-1-4 09:38:13

谢谢楼主,资料不错

aozima 发表于 2009-1-4 00:14:26

刚刚再测试了下,基本正常,先发上来以供有用之人:

看着代码下载进去了,心里好激动!!

make

arm-elf-gcc (GCC) 4.1.1

Copyright (C) 2006 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



arm-elf-gcc -c  -mcpu=arm7tdmi-s   -DRUN_FROM_ROM -I. -x assembler-with-cpp -DFR

Q_XTL=11059200UL -DPLL_MUL=0 s.s

arm-elf-gcc -c  -mcpu=arm7tdmi-s   -I. -gdwarf-2 -DRUN_FROM_ROM  -DFRQ_XTL=11059

200UL -DPLL_MUL=0 main.c

arm-elf-gcc -o main.elf   -MF  s.o main.o  -mcpu=arm7tdmi-s   -I. -gdwarf-2 -DRU

N_FROM_ROM  -DFRQ_XTL=11059200UL -DPLL_MUL=2  -MD -MP  -nostartfiles -lc  -lm -l

c -lgcc     -T LPC2142-ROM.ld

arm-elf-objcopy -O ihex main.elf main.hex



make isp

lpc21isp -wipe        main.hex com3   38400 12000

lpc21isp version 1.61

File main.hex:

        loaded...

        converted to binary format...

        image size : 224

Synchronizing (ESC to abort). OK

Read bootcode version: 12

2

Read part ID: LPC2148, 512 kiB ROM / 40 kiB SRAM (0x402FF25)

Will start programming at Sector 1 if possible, and conclude with Sector 0 to en

sure that checksum is written last.

Wiping Device. OK

Sector 0: ..........

Download Finished... taking 1 seconds

Now launching the brand new code



点击此处下载 ourdev_570283.zip(文件大小:94K) (原文件名:gcc.2009年1月4日00时13分37秒.zip) 

aozima 发表于 2009-1-4 00:05:11

看了好久的.S文件,基本懂了一些

编译了下,能闪灯了

想整到codeblocks里面去,结果发现C::B默认编译.S文件的时候是使用如下命令行:

arm-elf-g++.exe -mcpu=arm7tdmi-s -I. -gdwarf-2 -DRUN_FROM_ROM -DFRQ_XTL=11059200UL -DPLL_MUL=2 -c s.s -o obj\Debug\s.o

只好为其它单独加入:-x assembler-with-cpp



但是在链接的时候发现C::B默认使用的是:

arm-elf-g++.exe -o bin\Debug\gcc.elf obj\Debug\s.o obj\Debug\main.o....(这里接自定义参数)



发现这样子不行,最终发现,要把 -MF 对数放在**.o文件的前面才行.

arm-elf-g++.exe -o bin\Debug\gcc.elf -MF obj\Debug\s.o obj\Debug\main.o....



而用C::B再怎么整也只能做到:

arm-elf-g++.exe&nbsp;-o&nbsp;bin\Debug\gcc.elf&nbsp;obj\Debug\s.o&nbsp;obj\Debug\main.o&nbsp;<font color=grenn>&nbsp;-MF&nbsp;....</font>



卡住了,难道只能写Makefile?(关键是Makefile我倒是会写,但是为什么不能简单点呢....)

.

夜深了,睡觉......

yplin27 发表于 2009-1-3 18:10:47

to:【19楼】&nbsp;aozima&nbsp;残剑饮血

现在学uclinux,所以用的也是gcc,只不过不是跑裸机代码。

还有就是在弄这个

http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=878820&bbs_page_no=1&search_mode=1&search_text=%C2%B7%D3%C9&bbs_id=1032

刚刚开始移植u-boot,不知道论坛里其他兄弟弄得怎样了

aozima 发表于 2009-1-3 17:55:35

下午对.ld和.s文件研究了一下,大概也就上面那个意思吧..

要等完全弄明白可能还要假以时日



以下是我的个人理解:

AVRGCC中确实有这么一段,不过是内置的(因为AVR的芯片都确定,而ARM因为厂家太多了,没办法做到,即使是同一型号也有不同的用法)

而且没有"把位于rom中的数据段(也可以是代码段)复制到实际运行时的位于RAM中地址上"



继续研究中...

不知道楼主日常应用是不是用ARMGCC?我想应该不是!

yplin27 发表于 2009-1-3 14:51:42

【17楼】&nbsp;aozima&nbsp;残剑饮血:

*.ld文件是一种描述性质的文件,作用是告诉链接器各种代码段放在什么位置,所以只能按照所用的链接器要求的格式来写



Start.S个人理解主要是用于把位于rom中的数据段(也可以是代码段)复制到实际运行时的位于RAM中地址上,然后跳转到c代码中执行。



现在有点怀疑在avr中是否也存在这样的一段启动代码,希望能有哪位高手来解疑

aozima 发表于 2009-1-3 12:48:17

Makefile倒是照着例子和以前的理解是可以自己去改写了

但是目前还是没搞清楚如果用C的话&nbsp;.S和***.LD文件该怎么写

不知道楼主有没有这方面的资料?



WinARM-20060606里面的示例再自己修改下可以用了,写了几个小程序也可以跑了,但这样子始终还是没明白到底是怎么一回事..

本贴被 aozima 编辑过,最后修改时间:2009-01-03,12:50:29.

NationalSemi 发表于 2009-4-1 13:01:29

谢谢楼主的资料。
我想学习arm+linux,所以对winarm比较感兴趣
现在手头有一块QQ2440和配套购买的H-JTAG,如果按照楼主的方法安装winarm、cygwin、ocdremote
能不能进行u-boot、linux内核的调试呢(速度因素暂不考虑)?
不知道我的这个H-JTAG和wiggler有什么区别没

lilolog 发表于 2009-7-20 14:47:24

令人耳目一新的资料,感谢文档作者及楼主!

usecool 发表于 2009-7-20 16:47:39

调试elf文件可以用keil

hardwing 发表于 2009-7-20 21:43:14

to: 楼主,

我不是用winarm+ocdremote,用eclipse+jlink gdb server. 但用的complier也是gcc.所以遇到的问题基本上都是一样. 而我的target也是44b0, 有时间可以交流一下经验.

to: usecool.

哦,怎麼又是你? 又在推销用keil调试elf文档吗?
但想请问一下, 用测试版keil调试elf文档有没有代码大小限制? 如果没有我也去试试.

zhoui 发表于 2009-9-24 10:08:42

最近也在学习用winarm调44b0代码,中断和汇编老是没法搞清楚

D.lovers 发表于 2009-9-26 08:48:50

很需要多一点这些资料!谢谢!

ndust 发表于 2009-9-26 09:07:43

jh

minux 发表于 2009-9-26 18:07:54

【10楼】 zm2002
你也太小瞧gcc了,
你看看gcc的代码吧:
a.o:   file format elf32-littlearm


Disassembly of section .text:

00000000 <f>:
extern int a;
int f(int b) {
      a += b >> 4;
   0:   e59f2010      ldr   r2,    ; 18 <f+0x18>
   4:   e5923000      ldr   r3,
   8:   e0833240      add   r3, r3, r0, asr #4
   c:   e5823000      str   r3,
      return 0;
}
10:   e3a00000      mov   r0, #0; 0x0
14:   e12fff1e      bx      lr
18:   00000000      .word   0x00000000

使用:
arm-none-eabi-gcc -v
Using built-in specs.
Target: arm-none-eabi
Configured with: ../configure --target=arm-none-eabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --disable-shared --with-newlib --with-pkgversion='Sourcery G++ Lite 2009q1-161-minux' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/armgcc --with-headers=yes --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/opt/armgcc/arm-none-eabi/bin
Thread model: single
gcc version 4.3.3 (Sourcery G++ Lite 2009q1-161-minux)

编译命令行 arm-none-eabi-gcc a.c -g -O1 -c
仅仅是-O1而已。

估计说gcc不会优化的人是不知道gcc不加选项的时候不优化。

ndust 发表于 2009-9-26 20:35:25

jh

algebra 发表于 2009-12-6 19:01:23

非常需要WINARM资料

zhq040109 发表于 2009-12-20 15:41:14

我也用winarm,开发lpc2129.avr和arm的编辑器统一到uestudio,编译用winavr和windowsarm。无法进行调试,只能通过isp下到片子中开现象改程序。

yinjinzhong 发表于 2010-4-14 11:33:13

mark

zbjzxc 发表于 2010-4-14 12:29:35

先记号下~~

windy__xp 发表于 2010-11-12 11:26:54

向所有开源软件者们致敬。

flagyan 发表于 2010-11-14 22:51:18

winarm是不是要有cygwin才行?

wxx116zh 发表于 2010-11-15 08:56:32

mark

qdsywh 发表于 2011-9-17 11:10:29

请问winarm在哪里下载?
页: [1]
查看完整版本: 分享一些WINARM的资料,寻找同行者