打印
[ZLG-MCU]

推荐大家采用“IAR + LM LINK + LM3S驱动库”的高效率开发模

[复制链接]
5878|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zlgmcu|  楼主 | 2008-4-17 09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  推荐大家采用“IAR + LM LINK + LM3S驱动库”的高效率、低成本开发模式,这也是我们公司内部正在采用的开发模式。请大家到这里下载相关文档:

IAR + LM LINK 安装使用快速入门:http://www.embedtools.com/pro_kaifa/ARM/lm_link.asp
包括以下主要内容:
    安装使用方法(重要!).pdf
    IAR使用指南.pdf
    LM3S驱动库(快速安装)
    IAR工程模板(免新建工程)

  IAR软件简介:IAR是瑞典的一家著名的软件公司,IAR软件提供对8051、AVR、ARM7、Cortex-M3等等很多单片机的支持。目前适合免费开发Luminary单片机的版本是IAR 4.42A,有32KB限制的免费版可用,这给广大初学者提供了极大方便。

  LM LINK简介:为配合IAR软件的使用,我们公司专门研制了LM LINK调试器,采用USB2.0接口,小巧玲珑,既可以下载程序又能够在线仿真调试。零售价仅需100元,甚至可以赠送。

  LM3S驱动库简介:传统的单片机开发模式为工程师采用汇编或C/C++语言编程,并且要求对单片机的寄存器非常熟悉。但是进入16/32位时代以后,寄存器非常之多,很难短时间内掌握。另外,用寄存器方式编写的应用程序晦涩难懂、容易出错、不易调试、不便互相交流、维护成本高。而驱动库开发模式彻底改变了这一切。LM3S驱动库是Luminary Micro公司官方推出的,对外设寄存器进行了全面封装。开发人员可以在不了解任何底层寄存器的情况下仅用C/C++就能轻松玩转LM3S系列单片机。


(zlgmcu_wdx)

相关帖子

沙发
zlgmcu|  楼主 | 2008-4-17 09:15 | 只看该作者

采用驱动库编程确实能带来很大好处


  LM3S系列单片机采用的是结构简单、性能出众的ARM Cortex-M3处理器内核。Luminary官方免费公开地提供了基于C语言(符合ANSI C标准)的驱动库软件包,并且源代码是公开的。因此用户完全可以摒弃晦涩难懂的汇编语言,也不需要掌握底层寄存器的操作细节,只要懂C语言就能轻松玩转LM3S系列单片机。

  下面两个例程完成同样的功能:点亮接在PA3管脚的LED指示灯,一个采用寄存器方式,另一个则利用驱动库。我们可以看出,利用驱动库开发应用程序不仅编写起来简单快速,而且代码简洁、可读性性强。对编写大型程序而言,采用驱动库更能够增强可靠性和安全性,同时显著降低维护成本。



/*  采用底层寄存器操作的示例程序  */

#define  HWREG(x)           (*((volatile  unsigned long  *)(x)))

#define  SYSCTL_BASE        0x400FE000
#define  RCGC2              (SYSCTL_BASE + 0x108)

#define  GPIOA_BASE         0x40004000
#define  GPIOA_DATA         (GPIOA_BASE + 0x000)
#define  GPIOA_DIR          (GPIOA_BASE + 0x400)
#define  GPIOA_AFSEL        (GPIOA_BASE + 0x420)
#define  GPIOA_DR2R         (GPIOA_BASE + 0x500)
#define  GPIOA_DR4R         (GPIOA_BASE + 0x504)
#define  GPIOA_DR8R         (GPIOA_BASE + 0x508)
#define  GPIOA_ODR          (GPIOA_BASE + 0x50C)
#define  GPIOA_PUR          (GPIOA_BASE + 0x510)
#define  GPIOA_PDR          (GPIOA_BASE + 0x514)
#define  GPIOA_SLR          (GPIOA_BASE + 0x518)
#define  GPIOA_DEN          (GPIOA_BASE + 0x51C)

int  main(void)
{
    HWREG(RCGC2)  |=  0x01;             //  使能GPIOA端口

    HWREG(GPIOA_DIR)  |=  0x08;         //  设置方向和模式
    HWREG(GPIOA_AFSEL)  &=  ~0x08;

    HWREG(GPIOA_DR2R)  |=   0x08;       //  设置驱动强度
    HWREG(GPIOA_DR4R)  &=  ~0x08;
    HWREG(GPIOA_DR8R)  &=  ~0x08;
    HWREG(GPIOA_SLR)   &=  ~0x08;

    HWREG(GPIOA_ODR)  &=  ~0x08;        //  设置管脚类型
    HWREG(GPIOA_PUR)  &=  ~0x08;
    HWREG(GPIOA_PDR)  &=  ~0x08;
    HWREG(GPIOA_DEN)  |=   0x08;

    HWREG(GPIOA_DATA + (0x08 << 2))  =  0x00;       //  点亮LED
    for (;;);
}



/*  利用Luminary驱动库的示例程序  */

#include  <hw_types.h>
#include  <hw_memmap.h>
#include  <hw_sysctl.h>
#include  <hw_gpio.h>
#include  <sysctl.h>
#include  <gpio.h>

#define  SysCtlPeriEnable       SysCtlPeripheralEnable
#define  GPIOPinTypeOut         GPIOPinTypeGPIOOutput
#define  LED_PORT               SYSCTL_PERIPH_GPIOA
#define  LED_PIN                GPIO_PORTA_BASE , GPIO_PIN_3
#define  LedOn()                GPIOPinWrite(LED_PIN , 0 << 3)

int  main(void)
{
    SysCtlPeriEnable(LED_PORT);         //  使能LED所在端口
    GPIOPinTypeOut(LED_PIN);            //  设置LED所在管脚为输出
    LedOn();                            //  点亮LED
    for (;;);
}


(zlgmcu_wdx)

使用特权

评论回复
板凳
hotpower| | 2008-4-17 09:17 | 只看该作者

是呀~~~再套用个C++也是很爽的~~~

使用特权

评论回复
地板
winloop| | 2008-4-17 15:58 | 只看该作者

我是准备采用了

关键是ST的M3的几家代理的技术支持太差。。。
他们的开发板根本没资料,就跟自己从头开始研究差不多,但要等到LM出来开放总线的才能用,因为我的应用里必须用总线。

使用特权

评论回复
5
zlgmcu|  楼主 | 2008-4-17 16:13 | 只看该作者

现在Luminary新出的芯片内部已经以ROM形式固化驱动库函数


驱动库函数固化在ROM当中,好处有:

1. 不会占用用户的任何Flash资源

2. 最大限度提高代码密度

3. 加快程序执行速度

4. 这是Luminary免费提供的,不存在版权问题(royalty-free)


(zlgmcu_wdx)

使用特权

评论回复
6
mj2008| | 2008-4-18 13:27 | 只看该作者

ram的占用情况如何?

会不会规定某个地址范围内的ram不让用户用

使用特权

评论回复
7
zlgmcu|  楼主 | 2008-4-18 13:45 | 只看该作者

基本上不占用RAM资源

在调用库函数时,会临时占用极少量RAM资源,调用后会自动释放。

使用特权

评论回复
8
liujigan| | 2008-4-20 11:33 | 只看该作者

有一事不明望指教

调用芯片内部的库函数,但是在编译的时候如如果不加载外部的库函数能能通过吗?不知怎么解决这个问题的?

使用特权

评论回复
9
zlgmcu|  楼主 | 2008-4-21 08:35 | 只看该作者

Luminary公司已经考虑这些问题了

将来开发时,仍然使用IAR、Keil这些软件,库函数以“头文件 + 《驱动库指南》”的方式提供。用户只需#include相关头文件,就能够调用ROM里的库函数。

(zlgmcu_wdx)

使用特权

评论回复
10
hqgboy| | 2008-4-21 08:47 | 只看该作者

里面的函数会不会有BUG啊?

以后M3都是API???

使用特权

评论回复
11
zlgmcu|  楼主 | 2008-4-21 09:13 | 只看该作者

作为ROM的程序都是经过考验的,否则不会ROM固化起来

  从最初发布第一版《Stellaris外设驱动库》开始,驱动库的版本就在不断升级和完善当中。到现在驱动库已经非常稳定了,所以Luminary公司才敢将其固化到ROM里。要是万一真的出现bug,我们也可以用自己编写的驱动函数来代替ROM里的库函数,合理规避。

(zlgmcu_wdx)

使用特权

评论回复
12
overoo| | 2008-4-21 15:52 | 只看该作者

lm link慢阿

lm link是真慢阿

使用特权

评论回复
13
hqgboy| | 2008-4-21 16:09 | 只看该作者

既可以用固化的,也可以自己编写?

要是万一真的出现bug,我们也可以用自己编写的驱动函数来代替ROM里的库函数,合理规避

使用特权

评论回复
14
linghu886| | 2008-5-19 18:52 | 只看该作者

LM LINK支持 MDK(KEIL 3)吗?

你们也是做KEIL 代理的
很清楚KEIL3和IAR4.0版本的差异
可能我用KEIL非常习惯了
请问你们的LM LINK支持KEIL吗?
我大概5周后就有时间弄弄这个LM系列的芯片.
还有就是你们带USB功能的开发板(LM5000系列)什么时候面世?
预计里面会SD卡或者TFT模块吗?

使用特权

评论回复
15
zlgmcu|  楼主 | 2008-5-20 11:36 | 只看该作者

在Keil下也可以用LM LINK,不过速度太慢了

Keil对LM LINK的支持不够好,能用但速度太慢,实际上还是无法使用。倒是对自家的U-LINK支持很好!

LM3S3xxx系列带USB,5xxx系列带USB+CAN,相关开发板我们会尽快推出的,但估计要在2个月后。

(zlgmcu_wdx)

使用特权

评论回复
16
jxb163| | 2008-6-13 12:53 | 只看该作者

...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

1146

帖子

0

粉丝