原创 EK-LM3S8962学习流水帐

2010-8-10 20:06 5435 6 8 分类: MCU/ 嵌入式

前言


感谢湘潭热心的网友张哥寄来的板子,让我也有幸能象其它网友一样学习LM3S。


 


和STM32相比,LM3S确实有不少特点,集成MAC+PHY的以太网控制器,带SDRAM的EBI外部总线,这些对于同类芯片来说,已经是很好很强大了。


 


当然它的发光点还不仅仅是这两处:


单周期FLASH,最高达100M的主频,内置固件函数库,多种方式bootloader,IO位屏蔽,SPI和串口带FIFO等等。


 


下面是学习过程中的一些记录,旨在如何应用,分析得还不够深入,供参考。


 


一、        LM3S的Bootloader


    D:\StellarisWare\boot_loader 文件夹下是lm3s bootloader源码,支持usb ssi 以太网串口方式boot,通过bl_config.h配置;


 


这个目录里包含了bootloader应用的所有文件,就像一个库一样,当需要用到bootloader时,只需要建一个工程把这个文件夹里需要用到的文件加进来,再修改一下bl_config.h文件就可以了,具体可参考范例。


这里面还有一个bl_config.c文件,需要说明一下,它不是一个标准C语法的文件,我们不需要把它包含到工程中去,它的目的是为了和bl_config.h文件一起生成bl_config.inc文件,因为bl_config.h中定义了的这些配制参数,在bl_startup_rvmdk.s文件中用到,而在keil中汇编文件又不能直接#include "bl_config.h",它只能include bl_config.inc。所以需要用keil的armcc工具将bl_config.h和bl_config.c文件生成bl_config.inc文件,注意该文件要在代码编译前产生。


   在 run user programs before build/rebuildl输入 armcc --device DLM -I . -E -o bl_config.inc ..\..\..\boot_loader\bl_config.c(bl_config.h在当前目录,bl_config.c在..\..\..\boot_loader 目录),并在RUN处打勾,如下图:


283151bf-99b2-43d9-a012-55820b6fdce8.JPG


..\boards\ek-lm3s8962目录下有两个范例


boot_eth是以太网方式boot


boot_serial是串口方式boot


bl_config.h文件在这两个范例的工程下。


 


有一个文件需要说明一下:


bl_link.sct是内存地址分配的一个文件,在boot的keil工程 options for target 的linker栏 scatter file处输入bl_link.sct的路径。注意,这里分配了app区的起始地址,在app工程设置中应与其的一致。


 


bootloader库适应于多个编译环境,由于是使用keil,所以需要在 options for target 的C/C++栏 Define栏里输入 rvmdk 。


 


..\docs文件夹下有bootloader的介绍。


 


一、        LM3S的中断


Lm3S的中断函数没有像STM32那样将所有的中断函数在汇编文件里做声明,并全部整理到stm32f103_it.c里来,而是需要用户自已修改汇编文件进行声明,如下图用到的定时器中断:


e8fdbe51-8c73-4bbd-9f09-4969371e8849.JPG


然后在你的主程序里写上


fae11f32-9466-4fac-98b2-f84955456769.JPG


就是中断入口了。其实和STM32是一样,只是写法不同。


 


一、        LM3S的位操作


Bitband是位操作的范例,LM3S的库有几个宏非常有用,在hw_types.h下


f1fcb198-6803-4d7a-b07f-be707c55f13a.JPG


当访问寄存器,或位操作时,需要用到这些宏,如对某变量的某位置1:


static volatile unsigned long g_ulValue;


HWREGBITW(&g_ulValue, 31) =  0;


HWREGBITW(&g_ulValue, 7) =  0;  //给 g_ulValue第31位和第7位置0


 


一、        LM3S的时钟设置


下面两种设置,相信一看就明白了


1、


   //


    // Set the clocking to run directly from the crystal.


    //


       SysCtlClockSet ( SYSCTL_USE_OSC  |                    // 系统时钟设置,不采用PLL       


                    SYSCTL_OSC_MAIN  |                    //主振荡器                       


                    SYSCTL_XTAL_8MHZ  |                    // 外接8MHz晶振                 


                    SYSCTL_SYSDIV_1 ) ;                //不分频,结果为8M 


 


   2、


//


    // Set the clocking to run directly from the crystal.


    //


    SysCtlClockSet ( SYSCTL_USE_PLL  |                    // 系统时钟设置,采用PLL       


                    SYSCTL_OSC_MAIN  |                    //主振荡器                       


                    SYSCTL_XTAL_8MHZ  |                    // 外接8MHz晶振                 


                    SYSCTL_SYSDIV_4 ) ;                //4分频,结果为50M   


                                                 //Fury家族PLL固定为400MHz Sandstorm家族为200MHz,软件里计算都是按200M算


                                                 //所以4分频后不是100M而是50M


   符件里的例程是在光盘例程的基础上,加了一些注释和一些修改,DOC文件夹里加了几个网上下载的资料。


结语:


   初识LM3S,还有很多不懂,不过至少保证可以将LM3S的片子用起来,弄熟它不是一朝一夕,需要在项目中去体会,去深入,如果在项目中需要用到以太网、或者需要挂大容量SDRAM,我想我会优先考虑它。


 符件下载地址


http://u.xunzai.com/fileview_329592.html


blog传不了这么大的文件,只好放到迅盘了


2010-8-9        lxf


Email:eeliu88 at gmail dot com

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户444877 2013-7-22 10:32

楼主,求附件啊,这个打不开,weichuyang@163.com,好人一生平安

用户952864 2010-12-24 11:29

写的很详细,很不错,再接再厉
相关推荐阅读
用户1278632 2011-09-15 12:49
解决FPGA配置成功,但不能初始化运行的BUG
摘要:    遇到两次FPGA配置完成,却不能正常运行的问题,一次是ALTERA的A1C3,另一次是XILINX的XC3S700A。两次都是DONE信号的问题。问题虽不大,但却很折腾人,今天在这里作下...
用户1278632 2011-09-15 12:41
Code Edit的神器UltraEdit
摘要:      我不是一个专职的程序员,但经常会要写一些单片机底层的code和hdl code,起初用UE,是因为查找和批量修改很方便,而且不会额外的生成一些“垃圾”文件;现在用UE三年多了,一直都...
用户1278632 2010-12-29 09:29
ISE与EDK联合设计报错 ERROR:NgdBuild:604 logical block
做一个很简单的测试在ISE的SCH里调用EDK的symbol,EDK的功能也很简单,就是CPU通过串品打印一串字符首先,我建一个ISE工程再建一source  sch类型,并设置为顶层,取名为top....
用户1278632 2010-12-22 14:49
EDK12.2中 mch_emc IP的时序问题
mch_emc IP可以将PLB总线时序转为inter 8080时序 下面是我用chipscope抓到的波形Mem_DQ_O_In :  数据输入 Mem_OEN:      读信号  Mem_A: ...
用户1278632 2010-12-22 14:29
xilinx FPGA的配制与应用程序引导-范例
两个Xilinx FPGA应用程序引导的范例1、run_in_flash是直接在NOR FLASH里运行程序2、spi_flash_boot是将BIT和bootloader和APP全部固化到SPI F...
用户1278632 2010-12-19 13:48
EDK下sram IP的使用
EDK软件的memory and memory controller中有一个xps multi-channel external memory controller(sram/flash)的IP,用来...
我要评论
2
6
关闭 站长推荐上一条 /3 下一条