在之前我已经写了三篇博客,抛砖引玉地介绍了contiki移植入门知识,在这几篇中,我介绍了contiki从开发环境搭建,到简单的点亮LED灯的程序,再一点点深入的分析这个程序,让大家对contiki有一个大致的了解。
但是光有这些还不够的,至少到现在,你和我一样,对于contiki而言,还处在朦朦胧胧的阶段,才刚刚开始。
随便问几个问题,例如:
1,contiki时钟是怎么来的?
2,contiki系统的事件是怎么回事,事件和timer之间又如何关联起来?
3,如果有两个事件,又如何处理?
4,contiki移植之后,相关的API如何实现?
等等这些问题,都是我们未知的,所以在接下来的篇幅中,我将详细地介绍contiki,和大家分享一下,我移植contiki 的过程。
PS:文章是我移植contiki的感悟,借鉴了许多前辈的经验,为防止遗忘记录下来,有很多错误或者不合适的地方,当然也有很多不懂的地方。如果有问题,可以联系我,我们一同探讨。
软件国际化的过程中经常使用到语言代码和国家地区的缩写,之前整理过一些常用的语言和国家在Android系统信息获取 之五:系统语言信息(续)-语言地区和简写对照表,
下面的这个语言代码与国家地区对照表(表格),比较全,涵盖了几乎所有的语言代码和国家地区。是从网上搜索而来,稍加处理。进行系统语言定制以及国际化的时候可以参考。
语言代码
国家/ 地区
"" (空字符串)
无变化的文化
af
公用荷兰语
af-ZA
公用荷兰语 - 南非
sq
阿尔巴尼亚
sq-AL
阿尔巴尼亚 -阿尔巴尼亚
ar
阿拉伯语
ar-DZ
阿拉伯语 -阿尔及利亚
ar-BH
阿拉伯语 -巴林
ar-EG
阿拉伯语 -埃及
ar-IQ
阿拉伯语 -伊拉克
ar-JO
阿拉伯语 -约旦
ar-KW
阿拉伯语 -科威特
ar-LB
阿拉伯语 -黎巴嫩
ar-LY
阿拉伯语 -利比亚
ar-MA
阿拉伯语 -摩洛哥
ar-OM
阿拉伯语 -阿曼
ar-QA
阿拉伯语 -卡塔尔
ar-SA
阿拉伯语 - 沙特阿拉伯
ar-SY
阿拉伯语 -叙利亚共和国
ar-TN
阿拉伯语 -北非的共和国
ar-AE
阿拉伯语 - 阿拉伯联合酋长国
ar-YE
阿拉伯语 -也门
hy
亚美尼亚
hy-AM
亚美尼亚的 -亚美尼亚
az
Azeri
az-AZ-Cyrl
Azeri-(西里尔字母的) 阿塞拜疆
az-AZ-Latn
Azeri(拉丁文)- 阿塞拜疆
eu
巴斯克
eu-ES
巴斯克 -巴斯克
be
Belarusian
be-BY
Belarusian-白俄罗斯
bg
保加利亚
bg-BG
保加利亚 -保加利亚
ca
嘉泰罗尼亚
ca-ES
嘉泰罗尼亚 -嘉泰罗尼亚
zh-HK
华 - 香港的 SAR
zh-MO
华 - 澳门的 SAR
zh-CN
华 -中国
zh-CHS
华 (单一化)
zh-SG
华 -新加坡
zh-TW
华 -台湾
zh-CHT
华 (传统的)
hr
克罗埃西亚
hr-HR
克罗埃西亚 -克罗埃西亚
cs
捷克
cs-CZ
捷克 - 捷克
da
丹麦文
da-DK
丹麦文 -丹麦
div
Dhivehi
div-MV
Dhivehi-马尔代夫
nl
荷兰
nl-BE
荷兰 -比利时
nl-NL
荷兰 - 荷兰
en
英国
en-AU
英国 -澳洲
en-BZ
英国 -伯利兹
en-CA
英国 -加拿大
en-CB
英国 -加勒比海
en-IE
英国 -爱尔兰
en-JM
英国 -牙买加
en-NZ
英国 - 新西兰
en-PH
英国 -菲律宾共和国
en-ZA
英国 - 南非
en-TT
英国 - 千里达托贝哥共和国
en-GB
英国 - 英国
en-US
英国 - 美国
en-ZW
英国 -津巴布韦
et
爱沙尼亚
et-EE
爱沙尼亚的 -爱沙尼亚
fo
Faroese
fo-FO
Faroese- 法罗群岛
fa
波斯语
fa-IR
波斯语 -伊朗王国
fi
芬兰语
fi-FI
芬兰语 -芬兰
fr
法国
fr-BE
法国 -比利时
fr-CA
法国 -加拿大
fr-FR
法国 -法国
fr-LU
法国 -卢森堡
fr-MC
法国 -摩纳哥
fr-CH
法国 -瑞士
gl
加利西亚
gl-ES
加利西亚 -加利西亚
ka
格鲁吉亚州
ka-GE
格鲁吉亚州 -格鲁吉亚州
de
德国
de-AT
德国 -奥地利
de-DE
德国 -德国
de-LI
德国 -列支敦士登
de-LU
德国 -卢森堡
de-CH
德国 -瑞士
el
希腊
el-GR
希腊 -希腊
gu
Gujarati
gu-IN
Gujarati-印度
he
希伯来
he-IL
希伯来 -以色列
hi
北印度语
hi-IN
北印度的 -印度
hu
匈牙利
hu-HU
匈牙利的 -匈牙利
is
冰岛语
is-IS
冰岛的 -冰岛
id
印尼
id-ID
印尼 -印尼
it
意大利
it-IT
意大利 -意大利
it-CH
意大利 -瑞士
ja
日本
ja-JP
日本 -日本
kn
卡纳达语
kn-IN
卡纳达语 -印度
kk
Kazakh
kk-KZ
Kazakh-哈萨克
kok
Konkani
kok-IN
Konkani-印度
ko
韩国
ko-KR
韩国 -韩国
ky
Kyrgyz
ky-KZ
Kyrgyz-哈萨克
lv
拉脱维亚
lv-LV
拉脱维亚的 -拉脱维亚
lt
立陶宛
lt-LT
立陶宛 -立陶宛
mk
马其顿
mk-MK
马其顿 -FYROM
ms
马来
ms-BN
马来 -汶莱
ms-MY
马来 -马来西亚
mr
马拉地语
mr-IN
马拉地语 -印度
mn
蒙古
mn-MN
蒙古 -蒙古
no
挪威
nb-NO
挪威 (Bokm?l) - 挪威
nn-NO
挪威 (Nynorsk)- 挪威
pl
波兰
pl-PL
波兰 -波兰
pt
葡萄牙
pt-BR
葡萄牙 -巴西
pt-PT
葡萄牙 -葡萄牙
pa
Punjab 语
pa-IN
Punjab 语 -印度
ro
罗马尼亚语
ro-RO
罗马尼亚语 -罗马尼亚
ru
俄国
ru-RU
俄国 -俄国
sa
梵文
sa-IN
梵文 -印度
sr-SP-Cyrl
塞尔维亚 -(西里尔字母的) 塞尔
sr-SP-Latn
塞尔维亚 (拉丁文)- 塞尔维亚共
sk
斯洛伐克
sk-SK
斯洛伐克 -斯洛伐克
sl
斯洛文尼亚
sl-SI
斯洛文尼亚 -斯洛文尼亚
es
西班牙
es-AR
西班牙 -阿根廷
es-BO
西班牙 -玻利维亚
es-CL
西班牙 -智利
es-CO
西班牙 -哥伦比亚
es-CR
西班牙 - 哥斯达黎加
es-DO
西班牙 - 多米尼加共和国
es-EC
西班牙 -厄瓜多尔
es-SV
西班牙 - 萨尔瓦多
es-GT
西班牙 -危地马拉
es-HN
西班牙 -洪都拉斯
es-MX
西班牙 -墨西哥
es-NI
西班牙 -尼加拉瓜
es-PA
西班牙 -巴拿马
es-PY
西班牙 -巴拉圭
es-PE
西班牙 -秘鲁
es-PR
西班牙 - 波多黎各
es-ES
西班牙 -西班牙
es-UY
西班牙 -乌拉圭
es-VE
西班牙 -委内瑞拉
sw
Swahili
sw-KE
Swahili-肯尼亚
sv
瑞典
sv-FI
瑞典 -芬兰
sv-SE
瑞典 -瑞典
syr
Syriac
syr-SY
Syriac-叙利亚共和国
ta
坦米尔
ta-IN
坦米尔 -印度
tt
Tatar
tt-RU
Tatar-俄国
te
Telugu
te-IN
Telugu-印度
th
泰国
th-TH
泰国 -泰国
tr
土耳其语
tr-TR
土耳其语 -土耳其
uk
乌克兰
uk-UA
乌克兰 -乌克兰
ur
Urdu
ur-PK
Urdu-巴基斯坦
uz
Uzbek
uz-UZ-Cyrl
Uzbek-(西里尔字母的) 乌兹别克
uz-UZ-Latn
Uzbek(拉丁文)- 乌兹别克斯坦
vi
越南
vi-VN
越南 -越南
前言:
由于项目的原因,需要在LPC1788(STM32 cortex-M3)上面跑contiki。
之前没有涉及到contiki,不知其为何物。不过这个不是难事,做IT的,每每遇到新事物,都不会处理,习惯了从无到有的过程就好了。
开始老师说这个系统很好移植,于是想在网上找现成的资料。无奈,关于contiki的资料少的可怜,contiki移植就更少了,有几篇也是互相copy而来的,连图片都没有改,呵呵。于是不得不自己动手,从头开始搞移植了。
操作系统:windowsXP
开发环境:MDK
目标板:LPC1788(cortex-M3 STM32)
移植系统:contiki
开发工具:J-Linker
在这里,先给出几个我认为比较好的链接,供大家学习研究contiki时使用。
1) Contiki大神Jelline的博客http://blog.chinaunix.net/uid-9112803-id-2978041.html,相信大家都看过他写的关于contiki的学习资料,没说的,大神的文章,当然要借鉴学习的。
2) Contiki大神徐凯的博客http://blog.csdn.net/xukai871105/article/category/1129569,这篇也是比较好的,我有些东西也是参考他的。
一 contiki简介:
“Contiki 是一个小型的,开源的,极易移植的多任务操作系统。它专门设计以适用于一系列的内存优先的网络系统,包括从8位电脑到微型控制器的嵌入系统。它的名字来自于托尔·海尔达尔的康提基号。Contiki只需几kilobyte的代码和几百字节的内存就能提供多任务环境和内建TCP/IP支持。”-------维基百科。
从维基百科这段介绍中可以得知contiki操作系统的三大特点——小型、开源、极易移植。和绝大多数开源的嵌入式操作系统不同,contiki非常容易移植,使用事件驱动和protothread机制,运行时占用的内存很小。究竟什么是时间驱动和protothread机制,本篇先不讲,在后面的文章中,我会给与讲解。
二 Contiki的源代码:
在线浏览http://contiki.git.sourceforge.net/git/gitweb.cgi?p=contiki/contiki;a=tree
GIT下载:git clone git://contiki.git.sourceforge.net/gitroot/contiki/contiki
最新的contiki系统已经更新到2.6版,我移植的就是2.6版本的contiki(跟上国际的脚步,呵呵)
三 开发环境的搭建:
1) Instant Contiki
InstantContiki是官方配好的开发环境,基于Ubuntu,在http://sourceforge.net/projects/contiki/下载InstantContiki,装在虚拟机VMware上。网上没什么资料,我自己也没有试过,虽然也有虚拟机。
2) IAR+J-Linker
网上的资料,大部分是基于IAR环境来开发的,移植起来相对简单。目标板也是ARM Cortex M3,如果你的也是这样的开发板,不妨试试用这个开发环境。不过在IAR做移植,要对Makefile进行大量修改。我自己安装了IAR,但是用了一周后,觉得很不舒服,而且修改什么的很不方便,所以放弃了,改用下面的方法。
3) MDK + J-Linker
这个就是我自己的方法了,用现成的MDK(keil for ARM) 环境+J-Linker移植contiki到我的LPC1788开发板上。由于之前网上都没有这样的资料,因此移植的难度可想而知。不过通过自己的努力,还是达到了预期的效果。
我这里有contiki大神Jelline的移植笔记的PDF板,大家可以百度Contiki学习笔记.pdf,如果找不到,可以发邮件告诉我(我的邮箱:hurryliu28@gmail.com),我会在邮箱中,把文档发给需要的你。