ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈

(配套源码软件开发板等资源,可移步博客同名QQ群:拿破仑940911


一、前言

目前IAR for 8051都更新到10.10.1版本了,但很多朋友却仍在使用着IAR 8.x.x,甚至还有在用IAR 7.x.x的......

A:人家都出到IAR 10.10.1了,你还在用将近十几年前的版本啊!

B:我比较怀旧,就喜欢用十几年前的(IAR)!

A:呃,但这样你就用不了新的协议栈了呀(Z-Stack 3.0.1)!

B:我比较怀旧,就喜欢用十几年前的(协议栈)!

二、Z-Stack最新版本

截止至本篇博客发布,TI的ZigBee协议栈的最新版本为Z-Stack 3.0.1,进入TI官网,可以找到:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第1张图片

三、IAR for 8051最新版本

截止至本篇博客发布,IAR for 8051最新版本为IAR 10.10.1,进入IAR官网,可以找到:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第2张图片

四、版本匹配问题

关于协议栈与IAR的版本匹配问题,请参照ZigBee TI ZStack CC2530 2.4 IAR软件版本(<-点击链接)

在TI的Z-Stack 3.0.1《Z-Stack 3.0 Release Notes.txt》中,明确指出了该版本的协议栈所使用的IAR版本:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第3张图片

就是EW8051 10.10.1。这个时候问题就来了:

1、我想使用最新版本的协议栈:Z-Stack 3.0.1,就得装最新版本的IAR:EW8051 10.10.1

2、我想使用老版本的协议栈:ZStack-CC2530-2.5.1a,就得装最新版本的IAR:EW8051 8.10.4

3、我用新版本的IAR去打开原来老版本的协议栈,就各种不对,编译都不成功!

五、用高版本IAR打开低版本协议栈

ZStack-CC2530-2.5.1aGenericApp为例。

1、打开工程

装了最新版本的IAR之后,找到对应的工程文件:GenericApp.eww,发现图标已经不一样了:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第4张图片

双击GenericApp.eww之后,首先会弹出如下窗口:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第5张图片

IAR这里已经提示我们了:版本太老,是否转换为新版本?这里当然选“Yes”,直接“Enter”回车即可。

紧接着就是一系列的加载:

看上去确实变得高级了许多!

等到全部加载成功之后,就看到了我们“陌生而又熟悉”的界面:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第6张图片

2、编译工程

点击上图中红色圆圈中的图标,即可开始编译整个工程!

编译结束之后,发现编译结果如下:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第7张图片

仔细看报的error

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第8张图片

大体都是这一种形式:Error[e46]: Undefined external "?V1" referred in AF......

3、第一步更改操作

更改Number of virtual

找到下图中所示的位置:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第9张图片

Number of virtual原本值为16,将这个值改为8

再次编译,编译结果变为:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第10张图片

4、第二步更改操作

替换启动文件chipcon_cstartup.s51

定位到ZStack-CC2530-2.5.1a\Projects\zstack\ZMain\TI2530DB目录下:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第11张图片

将其中的启动文件chipcon_cstartup.s51删除掉,加入新的同名启动文件chipcon_cstartup.s51

这里上传不了附件,所以大家如果需要的话,可以去群文件里面下载

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第12张图片

替换之后,最好是先按下图提示“clean”一下:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第13张图片

再次编译,编译结果如下:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第14张图片

此时可见,error已经没有了!

5、第三步更改操作

禁用所有LCD相关代码

大家肯定已经发现了:自始至终都有11个warning存在!

作为一个有轻微强迫症的程序员,怎么能忍受warning的存在呢?!当然,如果你不介意warning的存在的话,那到这里就已经结束了。

仔细看编译结果中报的11条warning

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第15张图片

发现其实全部都是出现在hal_lcd.c文件中的。由于只有我们在使用TI原装开发板的时候,才有可能会用到Z-Stack中的lcd相关代码,一般都是不会去用的。因此,最简单的办法就是:禁用所有LCD相关代码

找到协议栈的预编译选项所在位置:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第16张图片

在红色方框中的“LCD_SUPPORTED=DEBUG”前面加上“x”,改为“xLCD_SUPPORTED=DEBUG”。

并在下面新增一行:HAL_LCD=FALSE。

预编译部分更改完成后,如下图所示:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第17张图片

点击“OK”保存后,再次编译:

ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈_第18张图片

大功告成!


(配套源码软件开发板等资源,可移步博客同名QQ群:拿破仑940911

你可能感兴趣的:(ZigBee TI ZStack CC2530 8.4 用高版本IAR打开低版本协议栈)