【龙芯1c库】移植标准c库libc(libm类似)

本文将pmon中的libc移植到龙芯1c库中,用于龙芯1c的纯裸机编程。实际上标准的clibc不应该属于龙芯1c库,狭义的“龙芯1c库”应该是像“STM32库”那样只封装了各个外设的功能,这里说的“龙芯1c库”我认为应该是“广义的”,泛指裸机编程需要的各种常用功能的集合。先不咬文嚼字了,暂且这样理解吧。

除了libc外,标准数学库libm的移植也是类似的。

龙芯1c库的git地址是https://gitee.com/caogos/OpenLoongsonLib1c

为什么需要移植libc

为什么需要移植libc?因为需要用到libc中的一些函数啊。比如printfstrcpystrcatstrstr等等。

Libc中包括两类函数:字符串处理相关的函数(比如strcpy, strcat, strstr等等)和文件相关的函数(比如fopen, fclose, fgetc, fputc, fread, fwrite, printf等等)。对于单片机的裸机编程来说,只需要字符串处理相关的函数和printf就够了,其中printf是个特例,是我们移植的唯一一个文件相关的函数。

使用printf()函数打印调试信息时非常实用、非常常见的。而printf()函数的作用就是将字符串格式化,即在字符串中携带一些变量的值,比如用printf()函数打印“当前温度值=xxx”。

Printf()在格式化字符串的时候就需要使用各种字符串处理函数。除此之外,在解析或组建一些协议时,可能也需要使用字符串相关的一些函数。

怎样移植libc

字符串处理相关的函数

参考pmonPmon本身就是一个纯粹的裸机程序,里面也包含了libclibm。先来看下pmon里面的libc目录长什么样。如下


细心的读者可能已经注意到了,libc文件夹中的文件名好像有点熟悉也,对不对?^__^,对,就是在常用的strcpy, strcat, strcmp, strlen等函数后面加了“.c”。难倒每个函数单独放一个c文件吗?经过验证,是的,同一个源文件中,要么只有一个函数,要么就是功能相似的多个函数。比如:strcpy()strlcpy()

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值