显示标签为“ARM”的博文。显示所有博文
显示标签为“ARM”的博文。显示所有博文

2012年9月4日星期二

ARM經典問題300問 !!


DownloadARM汇编程序设计 经典300问


 
ARM經典問題300問,以一問一答的形式簡單迅速地幫你解決所有ARM組合語言程式設計中遇到的難題。

從電子發燒友手里弄來的第一手資料,與所有喜歡研究ARM的電子愛好者們一同分享。

 

文檔裡面所有的問題都是以下列形式出現的,先參考兩個例子:

 

1:

Q:請問在初始化CPU堆疊的時候一開始在執行mov r0, LR這句指令時處理器是什麼模式

A:重定後的模式,即管理模式.

 

2:

Q:請教:MOV中的8點陣圖立即數,是怎麼一回事 0xF0000001是怎麼來的

A:是迴圈右移,就是一個0—255 之間的數左移或右移偶數位的來的,也就是這個數除以4 一直除, 直到在0-255的範圍內它是整數就說明是可以的!

A:8位數(0-255)迴圈左移或迴圈右移偶數位得到的,F0000001 既是0x1F迴圈右移4位元, 符合規範,所以是正確的.這樣做是因為指令長度的限制,不可能把32位立即數放在 32位元的指令中.移位偶數也是這個原因.可以看一看ARM體系結構(ADS自帶的英文文 )的相關部分.

 

具體內容請參考附件資料,希望對大家有幫助噢~
 
 

2012年8月8日星期三

如何實現W7100A程式燒錄

1.简介
W7100A的代码存储器内部具有启动ROM(Boot ROM)和闪存(Flash Memory)。启动ROM通过ISP函数自动驱动W7100A,因此用户不能修改启动ROM中的代码。但是,闪存仍然可以作为代码存储器使用。
当系统复位时,W7100A自动执行启动ROM的启动代码。这之后的过程根据BOOTEN引脚的不同而有所差异。这篇手册将会介绍如何将代码烧录到闪存。
下面为详细的执行过程:
如上图1所示,在复位后,根据W7100A的BOOTEN引脚设置,会有两种不同的执行方法。第一种方法是通过将BOOTEN引脚置为1来使用启动ROM中的ISP功能。另外一种方法是通过将BOOTEN引脚置为0,不需要使用启动ROM直接跳转到闪存。
用户可以用ISP模式烧录闪存或者修改APP模式下的ISP进程。更多关于APP模式(BOOTEN引脚=‘1’)执行的详细信息,请参考W7100A数据手册的‘2.1代码存储器’。
2. ISP模式
当BOOTEN引脚被置为1时,W7100A的状态为ISP模式,用户可以使用WIZnet的ISP程序。在这种模式下,通过ISP程序对代码闪存和数据闪存进行写入(write)和读取(read)操作。更多的详细信息,请参阅‘WizISP程序用户指南’。
3. APP模式的ISP进程
通常用ISP程序来写入和擦除代码/数据闪存是通用的方法。但是启动ROM内含有ISP函数,用户可以直接调用该函数,但是需要注意此时W7100A必须执行于APP模式下。如果打开的是ISP模式,用户需要重启将ISP模式改为APP模式。当调用ISP函数时,请注意调用ISP函数的路径必须不能发生在重叠区域。如图中的‘初始化声明’,重叠区域是启动ROM和闪存区重叠的部分。因此,用户必须在重叠区域(0x0000~0x07FF)上烧录代码。如果ISP函数调用路径发生在重叠区域(0x00000~0x07FF),因为启动ROM和闪存之间的转换过程没有返回地址将会产生错误。为了使程序正确地执行,用户必须在‘Keil uVision3’编译器中键入下面的代码来防止重叠。
按照路径‘Options for Target ‘project name’’ => ‘LX51 Locate’ => ‘User classes’在工程才中键入段落符号‘CODE_ISP(C:0x0800)’。然后将下面的代码插入function()函数中,function()函数内包括调用ISP函数。用户可以根据编译器的不同改变该过程。
如果W7100A通过闪存代码执行,W7100A将会完成存储器映射转换,如图3‘代码闪存状态’,同时启动ROM会被禁止。因此,要使用启动ROM内的ISP函数,必须将存储器图转换回来以重新激活启动ROM(Boot ROM)。用户还必须将WCONF(0xFF)寄存器的ISPEN位置设为‘0’,这样启动ROM(Boot ROM)才能被激活。然后,用户可以调用已定义的ISP函数,与ISPID一样,在闪存中擦除或者写入数据。
如下是使用ISP函数的基本示例。

注意: 在这一章,所有的示例代码都是基于‘Keil uVision3’编译器。
‘do_isp’函数利用isp_id、isp_addr和isp_data来执行ISP函数。
用户必须确保上面的ISP函数执行过程中没有其它中断发生。首先,将ISPEN设置为‘0’激活启动ROM(Boot ROM)和ISP ENTRY。其次,将相应的ISPADDR和ISPDATA写入已定义的ISPID中。然后,通过调用ISP ENTRY来执行启动ROM(Boot ROM)中的ISP函数。如果ISP ENTRY被调用,ISP函数将会相应于用户已经设定的ISPID来执行。当ISPID执行完成后,ISP ENTRY将会自动返回到ISP函数被调用的路径。在返回之后,如果用户将ISPEN位置设为‘1’,处于激活状态的启动ROM和ISP ENTRY将会失效。然后,闪存可以完全再次作为代码存储器使用。最后,返回所有的中断设置为初始状态,完成整个过程。
如下是根据每一个命令定义的ISPID。
因为‘ISP_chip_erase()命令’能擦除整个闪存数据,并且也可以擦除执行代码,执行代码在返回到闪存后将执行,所以除了ISP程序外不要使用‘ISP_chip_erase()命令’。
使用上面的命令,擦除从0x00到1区(sector)的值、写入0xAA的值并且在0x00中读,代码示例如下:
用于数据闪存(Data Flash)的示例代码如下所示,描述了用户可以擦除1区(sector)并且在1区写入0x00~0xFF的值。因为W7100A的数据闪存(Data Flash)具有256字节(1区),不需要RAM结束地址用于ISP_data_sector_prog 或者ISP_data_sector_read。
以上就是本文的全部内容,有什么不解或是需求,可以随时留言联系我们或者去我们的官网咨询。

☞想了解更多,请登录我们的网站:http://www.iwiznet.cn/

或者来电:86-10-84539974(转166),QQ:2377211388,联系人:TME-Jerry 谢谢!
官方博客:blog.iwiznet.cn

 

2012年7月16日星期一

W5300E01-ARM 交叉編譯器(Cross Compiler)用戶手冊 (版本1.0)(四)


在上三篇博文里我们介绍了W5300E01-ARM 交叉编译器(Cross Compiler)用户手册的前半部分,包括第一章简介和第二章的源代码下载以及第三四五六章,分别是LINUX内核安装,‘BINUTILS’安装,‘GCC’安装和’glibc’安装。

在这篇博文里我们将介绍用户手册的最后部分,包括第七章和第八章,分别是‘GCC’重新安装和测试。希望对大家有所帮助。


7.‘gcc’重新安装

到这里,我们已经准备好了交叉编译器的开发环境。重新安装 ‘gcc’, 交叉编译器就完成了安装.
7.1删除以前使用过的 ‘gcc’代码
cd /cross_tools/
rm –rf gcc-3.4.3
7.2解压 ‘gcc’ 源代码.
tar jxvf gcc-3.4.3.tar.bz2
7.3为了防止对程序库的依赖而做以下修改
cd /usr/local/arm/arm-linux/lib
strings libc.so
cp libc.so libc.so.org
sed ‘/BUG/d’ libc.so > libc.so.new
mv –f libc.so.new libc.so
strings libpthread.so
cp libpthread.so libpthread.so.org
sed ‘/BUG/d’ libpthread.so > libpthread.so.new
mv –f libpthread.so.new libpthread.so


7.4创建用于‘gcc’ 编译的目录
cd /cross_tools/gcc-3.4.3
mkdir build
cd build
7.5配置编译环境
../configure –taeget=arm-linux –prefix=/usr/local/arm –program-prefix=arm-linux- \
--with-headers=/usr/src/linux/include –with-cpu=arm9tdmi \
--with-softfloat-support=internal –enable-languages=c,c++ --nfp


7.6编译与安装
make
Make install

8.测试
8.1我们以 ‘Hello WIZnet’为例来做测试.
输入 ‘/cross_tools/hello.c’
#include <stdio.h>

Int main(void)
{
  printf(“Hello WIZnet\n”);
  return 0;
}
 
 









 8.2用新创建的交叉编译器编译 ‘hello.c’ 源代码.
arm-linux-gcc –o hello hello.c
file hello


8.3在连接‘W5300E01-ARM’ 板和PC以后, 执行 ‘minicom’。然后,接通‘W5300E01-ARM’ 板电源。 想更多了解关于‘minicom’ 配置的详细信息, 请参考 ‘W5300E01-ARM用户手册’, ‘4.1.2 Booting Check at the Linux’的部分
Minicom


8.4系统启动之后,登入 ‘root’ ‘hello’ 发送到W5300串口中
root
‘Ctrl’ + ‘a’,’s’
选择 ‘Zmodem’
移动到 ‘/cross_tools’
用空格键选择‘hello’文件
点击回车键把文件从PC发送到‘W5300E01-ARM’


8.5‘W5300E01-ARM’板中执行 ‘hello’
./hello


如果您有任何疑问,请直接留言或登录WIZnet官方网站:http://www.wiznettechnology.cn/
或者来电:86-10-84539974(转166),QQ:2377211388,
邮箱:wiznetbj@wiznettechnology.com  联系人:Jerry ,谢谢!
公司微博是: http://weibo.com/wiznet2012

2012年7月11日星期三

W5300E01-ARM 交叉編譯器(Cross Compiler)用戶手冊 (版本1.0)(一)



这篇文章以及接下来的几篇,我们将介绍W5300E01-ARM  交叉编译器(Cross Compiler)的用户手册。
今天先介绍第一部分,内容包括第一章简介和第二章源代码的下载。内容如下:

1.简介
当用户的开发环境与目标系统不同时就会用到交叉编译器例如,当开发基于ARM的嵌入式系统时,用户就需要在电脑上写出源代码,并用交叉编译器进行编译。编译的二进制映像是在基于ARM的系统中运行,而不是在电脑中运行。

1.1交叉编译器的构成
有几种常用的交叉编译器 –例如 ADS/RVCT (ARM提供GNU编译器。 W5300E01-ARM支持GNU编译器,GNU编译器是由以下部分组成。
n  binutils
Ø  用来控制各种目标文件格式(.obj)的编程工具
n  gcc
Ø  GNU 编译器
n  gibc
Ø  交叉编译器的程序库

1.2安装准备
W5300E01-ARM的交叉编译器的版本是3.4.3,因此对于交叉编译器需要用3.4.x版本的GCC 请检查你的电脑是否安装了3.4版本的GCC

从下一章起,我们会逐步阐述交叉编译器的编译和安装的过程。请按本手册正确安装并且生成编译器。

2.源代码的下载
由于系统组成原因,编译器的安装需要根(root)身份认证。在登陆进入root后,创建如下的目录:
Ø  mkdir /cross_tools
Ø  cd /cross_tools

下载 ‘binutils-2.15’ 源代码

下载 ‘gcc-3.4.3’ 源代码.

下载 ‘glibc-2.3.3’ 源代码.

下载 ‘glibc-linuxthreads-2.3.3’源代码。 ‘glibc’包括‘linuxthreads’程序库.

如果您有任何疑问,请直接留言或登录WIZ net官方网站:http://www.wiznettechnology.cn/
或者来电:86-10-84539974(转166),QQ:2377211388,
邮箱:wiznetbj@wiznettechnology.com  联系人:Jerry ,谢谢!

2012年6月18日星期一

[多圖]12核Cortex-A9的運算能力能有多強?


今年 ARM 架構開始在運算領域嶄露頭角,包括幾家伺服器大廠推出基於 ARM 架構的產品,還有 Computex 期間包括 Calexda 與神達等都在會場展示解決方案,到底 ARM 架構的運算能力能到何種境界?知名 Linux 網站 Phoronix 的站長Michael Larabel 靠著 6 PandaBoard ES 開發板,每張上面有一顆雙 Cortex-A9 TI OMAP 4460 應用處理器以及 1GB 記憶體與 16GB SDHC ,搭配 Ubuntu 12.04 作為系統進行了測試。


















Michael Larabel 還將這套系統對比雙核的 Atom AMD E 系列 APU 還有 Ivy Bridge 架構的 Intel Core i7 等傳統 x86 處理器,他的結論是目前這套 DIY 平臺的效能勝過 Atom ,相較 AMD E 系列 APU 有較好的功耗效能比,不過仍低於 Core i7
    但他也強調他的平臺是 DIY 拼湊出來的,目前 Ubuntu 對於 ARM 架構最佳化才剛起步,而且目前使用的 Cortex-A9 核心仍是 32bit ARMv7 基礎架構,他很期待下一代 ARMv8 64bit 基礎架構問世後的表現。