TinyOS的个人见解3‘之认识平台
来源:互联网 发布:西安数据恢复公司 编辑:程序博客网 时间:2024/06/05 07:48
下面介绍一下底层相关的:
你生成的代码需要平台运行,那么tinyos最有名的平台应该就是telosb,同步介绍新平台,也就是作者移植的平台cc2538cb;在此主要还是针对tinyos2.2.12release版本的目录结构,后面会捎带说明为什么不是现在github上的做法。
很重要的是你要知道下面的环境变量:有可能是启动bashshell的时候自动export,也有可能是你手动去source xx.sh
TOSROOT
TOSDIR=$TOSROOT/tos
MAKERULES=$TOSROOT/support/make/Makerules
对于github上最新版本则有所替换,具体去看他的make目录下的read文件
相关的目录为TOSDIR/chips和TOSDIR/platforms
TOSDIR/chips相对比较简单,主要是一些底层的驱动的文件,如timer何uart,rf等等
TOSDIR/platforms相对比较重要的是.platforms文件,注意前缀是‘.’,在linux/ubuntu下可以在该目录下按下ctrl+h键显示这种隐藏文件,这个文件是你移植平台让makefile找到tinyos库组件的关键文件,你可以将库组件,TOSDIR/chips下的组件目录添加到这个文件中,
指定nesc编译器调用如ncc=msp430gcc/ncc=arm-none-eabi-gcc,指定编译选项和平台的相关如添加TOSDIR/chips下的RF驱动目录到编译路径:
push ( @includes, qw(
%T/chips/cc2538/rf
}
cc2538cb
@opts = qw(
-gcc=arm-none-eabi-gcc
-mcpu=cortex-m3
-nostartfiles
-fnesc-target=env
-fnesc-no-debug
);
push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
指定内存占用字节数:
$ENV{NESC_MACHINE} = "structure_size_boundary=32, pointer=4,4 float=4,4 double=8,4 long_double=8,4 short=2,2 int=4,4 long=4,4 long_long=8,4 int1248_align=1,2,4,4 wchar_size_size=4,4 char_wchar_signed=false,true";
TOSDIR/platforms下的组件主要是完成系统时钟的初始化,LED的初始化等工作;
当然github上最新的代码的做法是将这个文件删除了,改为在support/make下添加xxx.platform文件,tinyos介绍make将会说明为什么我在移植cc2538cb平台的时候要保留2.2.12release的做法。
- TinyOS的个人见解3‘之认识平台
- TinyOS的个人见解3之make
- TinyOS的个人见解1
- TinyOS的个人见解4之任性的cc2538
- TinyOS的个人见解2之ncc编译过程
- .Net平台中虚方法的好处之个人见解
- 我的注入方法之个人见解!
- 面向对象的特征之个人见解
- J2ME的个人见解
- UML的个人见解
- Http的个人见解
- GeoQuiz的个人见解
- JVM 的个人见解
- 反射的个人见解
- BeautifulSoup的个人见解
- Android之Activity个人见解
- 性能优化之个人见解
- 面向对象之个人见解
- DOCKER笔记(1)
- iOS中GIF的制作的简单版本记录 详解
- struts入门
- LEETCODE--Count Primes
- for循环的魅力-PHP(for函数比while函数更高效)
- TinyOS的个人见解3‘之认识平台
- LeetCode:Compare Version Numbers
- android 透明状态栏与沉浸式
- @Bean在@Configuration和在@Component中的区别
- [JAVA MEMO]
- SlidingMenu的使用
- Android Fragment 你应该知道的一切
- 磁珠、电感的区别
- CodeForces 44J - Triminoes -搜索转构造