一共两块电路板、两张光盘。看中了他的网络。目前想先调出他的网络功能..
大板上的主芯片是LM3S8962,并有一款128*96的单色OLED(白色), 可以提供简单的图形显示。
光盘1里面的内容如下:
1、Keil RealView MDK, 有32K代码限制。
2、StellarisWare™ Firmware Development Package, 套件拿到手后第一个要装的程序,提供驱动程序、例子、说明文档。
3、LM Flash Programmer Utility,因为送的软件都有32K限制,所以提供另外一个方法,这样可以直接下载BIN文件。
4、Device Drivers,是安装 FTDI device 的。还没有安装,调试的东西。先拷贝到电脑上以后用的时候装。
5、Real-Time Operating Systems,就是RTOS操作系统。
安装好了StellarisWare™ Firmware Development Package后,在安装目录下就有很多例子:
1、aes_expanded_key 板载芯片带有AES加密硬件,这个就是应用例子
2、aes_set_key 怎么设置一个加密密钥。
3、bitband 可能位操作有关的,这个还不是清楚。
4、blinky 怎么都有这个,就是让板上LED闪亮。
5、boot_demo1 串口或者网口引导启动的例子
6、boot_demo2 .......
7、boot_eth 网口引导装载程序
8、boot_serial 串口引导装载程序
9、can_device_led CAN设备例子,用板上按钮控制板上LED
10、can_device_qs CAN设备例子
11、drivers OLED的驱动,可以通过里面的函数对OLED编程,ANSI字库都在里面
12、enet_io 基于lwIP TCP/IP 的网络IO控制,支持DHCP客户端。
13、enet_lwip 基于lwIP TCP/IP 的例子,支持DHCP客户端,如果开发板上有SD卡就直接存取SD的内容。
14、enet_ptpd 基于lwIP TCP/IP 的例子,IEEE 1588 (PTP), 从互联网获取标准时间的例子。
15、enet_uip uIP TCP/IP 的例子。
16、gpio_jtag JTAG恢复的例子,当JTAG设置为GPIO时的例子。
17、graphics OLED显示例子
18、hello 地球人都知道
19、interrupts 中断演示
20、mpu_fault 用MPU保护内存区域的例子。
21、pwmgen PWM输出的例子
22、qs_ek-lm3s8962 那个迷宫游戏的例子
23、sd_card SD卡的FAT文件系统例子
24、timers 计时器的例子
25、uart_echo 串口例子
26、watchdog watchdog作为心跳信号的例子。
我的也快到了,对128*96的单色OLED(白色)较感兴趣。
嘿嘿...
EKK-LM3S8962没有到来之前,已经看了不少网友对开发工具的比较:大家主要焦点是在选择KEIL和IAR作为开发工具? 当时我选择了IAR。
EKK-LM3S8962的包装盒里有这两个软件的安装光盘。
一开始我安装IAR,选择安装在C盘,可是安装到70%左右时却提示安装空间不够,于是中断安装,查看了C盘剩余空间有1.2G。说明安装IAR需要大约2G的硬盘空间,如果需要正常运行IAR,最起码需要3G的硬盘剩余空间。
马上安装KEIL。有用过的网友说:KEIL也有很多优点,其中我最喜欢他具有十分方便的调试功能。安装好了KEIL后一看C盘还剩大约900M。
开始试着运行KEIL,,打开例子blinky(LPC1343开发板也有这个,天下技术一大抄啊!呵呵!开玩笑而已,不要当真。)。 Build Target , Download, Run,F5。开发板的LED不断闪亮。太简单了,没意思。 有打开例子enet_lwip。这个例子复杂很多: 基于lwIP TCP/IP栈,支持DHCP客户端自动获取IP地址,SD卡读取,FAT文件系统,WEB服务器。 编译好好了以后下载到开发板上运行: OLED提示: Web Server Using Internal File System(网页服务器使用了开发板内部的文件系统)。接上网线后自动获得IP地址:192.168.0.7, 在浏览器输入地址: http://192.168.0.7,浏览器显示出内置的WEB网页。
开发板断电,插入迷你SD卡。SD卡根目录下事先保存了index.htm文件,内容如下: index.htm 同时SD卡根目录下有文件名IMAG0849.JPG的图片文件。 再通电。OLED提示:Web Server Using SD File System。浏览器里显示内容是我放在SD卡里面的那张图片。
另外,EKK-LM3S8962带来的例子都是基于KEIL的,建议像我一样的初学者安装。
[
本帖最后由 zhdphao 于 2010-8-5 07:05 编辑 ]
LZ是IAR开发还是KEILMDK?
LZ是IAR开发还是KEILMDK?
原来是KEIL啊
我看了下我的C盘还有不到2G,那不是要装KEIL,LZ接触KEILMDK32K的限制了吗?
后天板子就到了,我也开始学习网络
希望LZ详细讲解下网络的部分,例如使用什么软件,如何安装,如何调试的,这样我也可以少走点弯路呵呵!交流!
引用: 原帖由 lilong8470 于 2010-8-5 07:38 发表 我看了下我的C盘还有不到2G,那不是要装KEIL,LZ接触KEILMDK32K的限制了吗?
其实有件事我现在十分纳闷: 我昨天晚上从开发套件提供的光盘上安装KEIL的,应该有32K限制的。
但是我编译enet_lwip后KEIL显示:代码 40780。 应该超过32K,没有报错,顺利的下载到开发板上运行。
你试一试看是不是和我的情况一样?
把IAR的example目录和powerpac目录全部删除后,IAR的也就400多M的大小。建议还是用IAR较好,因为做正式设计,选用仿真器的时候,与IAR配套的JLINK山寨的很便宜,而与KEIL配套的ULINK太贵。
引用: 原帖由 zhdphao 于 2010-8-5 07:57 发表 其实有件事我现在十分纳闷: 我昨天晚上从开发套件提供的光盘上安装KEIL的,应该有32K限制的。 但是我代码 40780。 应该超过32K,没有报错 ...
刚才在单位的电脑试了,编译enet_lwip后KEIL显示:.\rvmdk\enet_lwip.axf: error: L6050U: The code size of this image (40772 bytes) exceeds the maximum allowed for this version of the linker.
有限制。
1、enet_lwip.c 基于lwIP的示例网页服务器的主程序部分
2、ff.c FAT文件系统模块
3、httpd.c 网页服务器模块
4、lmi_fs.c 服务器模块的文件系统接口,httpd.c和ff.c的纽带。
5、lwiplib.c lwIP TCP/IP库
6、mmc_ek_lm3s8962.c Mini SD卡部分,基于SPI接口的。
7、rit128x96x4.c OLED驱动,里面有5x7的ansi字库,要汉字的自己可以做的。
8、startup_rvmdk.S Keil的启动代码
9、uartstdio.c 串口的控制台平台
10、ustdlib.c 简易标准库
11、driverlib.lib LM3S8962的基本驱动库文件
听说诸多IAR的优点,我连夜下载安装IAR。在IAR网站上可以下到30天评估版和32K入门版。
我下了30天评估版,这个没32K容量限制,而且网上提供很多算号器可以安装成无日期限制的版本。
安装很简单,输入序列号和LICENSE即可。
运行IAR Embedded Workbench,依然去打开经典的例子:enet_lwip。在enet_lwip文件夹没有找到IAR的项目文件,不过在上次目录下找到了:ek-lm3s8962.eww,打开后发现所有项目都在这里面。找到例子:enet_lwip,Make之。把编译好的程序下载到开发板,开始调试程序。
例子里面有两个不断触发的计时器中断:
1 void lwIPHostTimerHandler(void),
2 void SysTickIntHandler(void)
大约每执行10次 SysTickIntHandler后执行一次lwIPHostTimerHandler。
两个计时器中断的代码如下:
//*****************************************************************************
//
// Required by lwIP library to support any host-related timer functions.
//
//*****************************************************************************
void
lwIPHostTimerHandler(void)
{
static unsigned long ulLastIPAddress = 0;
unsigned long ulIPAddress;
ulIPAddress = lwIPLocalIPAddrGet();
//
// If IP Address has not yet been assigned, update the display accordingly
//
if(ulIPAddress == 0)
{
static int iColumn = 6;
//
// Update status bar on the display.
//
RIT128x96x4Enable(1000000);
if(iColumn < 12)
{
RIT128x96x4StringDraw("< ", 0, 24, 15);
RIT128x96x4StringDraw("*",iColumn, 24, 7);
}
else
{
RIT128x96x4StringDraw(" *",iColumn - 6, 24, 7);
}
iColumn++;
if(iColumn > 114)
{
iColumn = 6;
RIT128x96x4StringDraw(" >", 114, 24, 15);
}
RIT128x96x4Disable();
}
//
// Check if IP address has changed, and display if it has.
//
else if(ulLastIPAddress != ulIPAddress)
{
ulLastIPAddress = ulIPAddress;
RIT128x96x4Enable(1000000);
RIT128x96x4StringDraw(" ", 0, 16, 15);
RIT128x96x4StringDraw(" ", 0, 24, 15);
RIT128x96x4StringDraw("IP: ", 0, 16, 15);
RIT128x96x4StringDraw("MASK: ", 0, 24, 15);
RIT128x96x4StringDraw("GW: ", 0, 32, 15);
DisplayIPAddress(ulIPAddress, 36, 16);
ulIPAddress = lwIPLocalNetMaskGet();
DisplayIPAddress(ulIPAddress, 36, 24);
ulIPAddress = lwIPLocalGWAddrGet();
DisplayIPAddress(ulIPAddress, 36, 32);
RIT128x96x4Disable();
}
}
//*****************************************************************************
//
// The interrupt handler for the SysTick interrupt.
//
//*****************************************************************************
void
SysTickIntHandler(void)
{
//
// Call the lwIP timer handler.
//
lwIPTimer(SYSTICKMS);
//
// Run the file system tick handler.
//
fs_tick(SYSTICKMS);
}
作为第一个实验:将为其配上nRF905,把nRF905驱动起来。
晚上翻箱倒柜,终于找出了以前买的两个nRF905模块。
他的接口如下:1、VCC; 电源输入,接3.3V
2、TXEN: 模式选择,为1,发射模式;为0接收模式
3、TRX_CE: 开始发射接收工作
4、PWR: 为1,上电;为0掉电
5、uCLK: 时钟分频输出
6、CD:载波检测输出
7、AM:地址匹配输出
8、DR:数据就绪
9、MISO:SPI输出
10、MOSI:SPI输入
11、SCK:SPI时钟
12、SCN:为0,SPI有效
13、14、GND: 地