2022 LiteOS组件尝鲜—玩转Libiconv
概 述
随着互联网时代的发展,通过互联网进行文字交流的情况逐渐普遍,但在浏览一些外国网站获取信息时,通常需要进行字符编码的转换。那么问题来了,如果该字符在某一编码方式里没有该怎么办?为了解决这种混乱,Unicode编码方式诞生。Unicode是一种超级编码方式,包含了所有编码的字符集,因此一些新的文本格式类似XML的默认编码方式就是Unicode。
但是一些老式计算机还在沿用传统的字符编码方式,一些程序例如邮件程序和浏览器必须能够在这些不同的用户编码之间做转换,而一些程序虽然内置支持Unicode,但是仍然有在Unicode和其他的传统编码之间转换的需求,libiconv就是为这两种应用设计的编码转换库。
libiconv是一个开源的字符集转换库,可以在已知的字符集之间相互转换。详情参考: https://github.com/winlibs/libiconv
LiteOS中提供了IconvDemoTask来演示如何使用Iconv组件。根据iconv所需资源,暂时只支持在以下开发板上运行IconvDemoTask。
STM32F429
STM32F407
STM32F769
realview-pbx-a9
qemu-virt-a53
解析Iconv Demo
在iconv_demo.c中实现了下列内容:CodeConvert()通过调用libiconv库中的iconv_open()函数,生成用于字符转换的标识结构体cd,然后作为入参传入iconv()函数中,函数内依照标识cd和传入的数据的进行字符转换,保存到输出数据中。iconv_demo.c中分别实现了对GB18030,GBK,GB2312的字符和utf-8的字符进行相互转换。cp tools/build/config/Cloud_STM32F429IGTx_FIRE.config .config。
使能Iconv Demo
1.在LiteOS源码根目录下根据实际使用的开发板,拷贝tools/build/config/目录下的默认配置文件${platform}.config到根目录,并重命名为.config。以STM32F429为例,执行 cp tools/build/config/Cloud_STM32F429IGTx_FIRE.config .config。
2.在LiteOS源码根目录下执行make menuconfig命令,按如下菜单路径使能Iconv组件和Iconv Demo。
Components -->
Utility --->
[*] Enable Iconv
Demos --->
Utility Demo --->
[*] Enable Iconv Demo
保存退出后,LiteOS会从github上自动下载libiconv源代码,并从gitee上下载适配于LiteOS系统的patch包,并打入patch。详细流程在components/download.sh文件中。注意: 下载需要Linux主机可以访问互联网,并安装git。
编译运行Iconv Demo
在LiteOS源码根目录下执行make clean; make -j命令编译LiteOS工程,编译成功后会在out/Cloud_STM32F429IGTx_FIRE/lib路径下生成libiconv.a和libiconv_demo.a文件,并生成系统镜像文件Huawei_LiteOS.bin。注意: 选择不同开发板生成的镜像路径会有不同。
烧录系统镜像文件到开发板中可以看到如下运行结果。
结 语
未来我们还会持续新增更多组件、开发板、架构、特性等。
感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步: https://gitee.com/LiteOS/LiteOS/issues
为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如下图。
- end -
- 点赞
- 收藏
- 关注作者
评论(0)