嵌入式

Zigbee学习笔记

Zigbee是啥,请点这里查看 此学习版是在 taobao上花 5**元买来的(当然不是我掏钱)。其实是图便宜,买的精简版,很多外设和标准板不一样,所以在使用 ZStack中的例程时,外设的驱动得改,不过也不是什么难事,只是根据原理图,改一下管脚而已。 在本项目中,一个设备作为协调器(Coordinator),一个作为终端(End Device),当终端进入网络后,给应用层发个定期报告的消息,这样,终端便可定时向协调器报告。 对于 Zigbee的学习来说,关键是熟悉 ZStack,TI基本上把 Zigbee要用的全封在了 ZStack里面,所以熟悉 ZStack可以大大加速开发过程。

UCGUI移植成功

UCGUI是一种嵌入式应用中的图形支持系统,可以很方便的移植到各种平台上。 移植过程比较简单,在这里就不多说了,有兴趣的朋友可以 google或 baidu一下,都差不多,其实最关键的,还是 LCD底层驱动的开发。比较我用的是 ILI9325的显示屏驱动,根据 datasheet,无非就是发送命令,接收数据的过程,在些不表。 驱动中必须实现的是几个功能,初始化屏幕、SetPixel和GetPixel,然后,就是让 UCGUI能找到这些驱动,比如我在 ili9325_ucgui.c中实现如下几个函数 int LCD_L0_Init(void) { ILI9325_Init(); return 0; }   void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) { ILI9325_SetPixel(x,y,PixelIndex); }   unsigned int LCD_L0_GetPixelIndex(int x, int y) { return ILI9325_GetPixel(x,y); } 然后就可以调用 GUI_Init(); GUI_DispString("hello world!"); 如果使用了 UCOS-II之类的操作系统,请为任务分配 256以上的堆栈,我就是因为之前只分了 64,直接 HardFault了。 下一步的目标是实现触摸屏的功能,然后就可以做个简单的 SD卡资源管理器了(之前已经实现了 SD卡的 FAT格式分区)。 PS:此图并非是使用上函数的结果,这是在 ili9325_api.c中自己写的输出文字的函数,根据字库打点。同时实现了一些如画直线,画圆等函数。大学时学的计算机图形学些时顿显重要,一想到陈老师,内流满面啊。

STM32升级固件库

IAR 5.40自带了最新的固件库 v3.1.2(也许不是最新的,不过v3的都差不多),而之前学习 STM32开发使用的教程是用老的 V2的固件库。于是花了一点时间,学习了一下升级到 V3版本的固件库,根本上按照这个文档,可以比较顺利的升级到 V3版本的固件库,要说明一点的是,如果要移植 UCOS-II的话,请在 startup_stm32f10x_hd.s(或是你的开发板对应的启动文件中),修改 DCD PendSV_Handler ; PendSV Handler DCD SysTick_Handler ; SysTick Handler 为 DCD OS_CPU_PendSVHandler DCD OS_CPU_SysTickHandler 当然,在这之 前要导入这两个函数 EXTERN OS_CPU_PendSVHandler EXTERN OS_CPU_SysTickHandler 这个是为系统提供 PV和 SysTick的中断服务程序的。 也难怪了,之前我用 V3版提供的 USB固件库,怎么运行都是错误,V2和V3的固件库,区别还真的有点大。 下一步目标,学习 USB开发,包括开发板的USB开发,WINDOWS系统的USB驱动程序开发,以及相应的应用程序开发。如果有时间的话,再做个LINUX版的驱动~ PS:收到乐博的邮件,说是要验证身份,要求在博客中加“乐铺活动验证”的字,这就算加了吧。

交叉编译 nano editor

最近在玩 2440的开发板,在里面装了个 Linux,由于预装的 Linux所带的软件很少,因此,只能自己动手,往里面移植软件。 准备移植一个 nano,一个小型的编辑器。花了一点时间,学习了一下移植过程,交叉编译的时候,除了一些文件的缺失,也基本没什么问题。移植 nano的同时,需要移植 libncurses这个库。把这两个的原码都下载下来后,用 arm-linux-gcc编译,我用的是 3.4.1的版本。安装目录可以自己在 ./configure的时候用 --prefix=$DIR定义,要注意的一点是,在 ./configure nano的时候,需要定义 CPPFLAGS和 LDFLAGS,比如本人的定义 ./configure --prefix=/home/robin/nano/target-arm --host=arm-linux CPPFLAGS=-I/home/robin/nano/target-arm/include LDFLAGS=-L/home/robin/nano/target-arm/lib 编译完后,将 nano通过 nfs复制到目标板的 /usr/bin,将 lib目录下的库复制到 /usr/lib下。 运行 nano,提示 Error opening terminal: vt102. 于是 google之,发现是交叉编译 libncurses.so的问题,因为终端和PC的不一样了,解决办法是在目标版上运行 export TERM=vt100 export TERMINFO=/usr/share/terminfo 然后复制刚刚编译出来的 terminfo目录到目标板的 /usr/share/下即可

Str710移植UC/OS-II

经过高人的指点,并且经过几天的调试,UC/OS-II终于能跑在 Str710开发板上了。关于移植过程的细节,本文不作过多的描述,有需要的朋友可以自己 Google或是留言给我,在此就不多废话了。 目前已经可以通过三个任务,独立控制三个 LED灯,同时实现定时功能,任务间通讯采用消息机制,可以相互发消息。看了N多资料,一直不知道从何下手,当自己下定决心做后,虽然中间碰到很多困难,不过都解决了,高人的帮助实在是功不可没。 放上开发板的工作情况 下一步的计划,熟悉开发板上另一块芯片——DM9000,并自己试着写驱动程序,实现网络功能。同时移植 lwip,一个轻量级的 TCP协议栈。当这些工作完成后,就可以实现更高级的想法了。 PS:本人目前的工作环境