我的任务是为我公司的遗留嵌入式C编译器添加流支持(C89/C90)到库. 我们的目标硬件通常具有1MB或更少的代码空间,并且没有操作系统.
我们在整个代码库中有很多类似于流的实现,我可以将它作为起点.例如,通过TCP套接字或串行端口工作的控制台,从SD卡或内存文件中的FAT读取的Web服务器,甚至是从许多源读取的固件更新程序.
在我重新发明轮子之前,我想知道是否有现有的实现我可以移植或用作我工作的起点. 即使我们向客户提供完整的源代码,GPL许可代码也不是一种选择,因为我们的客户不希望向其产品发布源代码.
任何人都可以推荐一本书(带注释的Unix源代码,CompSci文本)或公共域名/ BSD许可源吗?我更愿意看一个针对单个设备的旧操作系统,因为当前的操作系统包含大量的宏和typedef层,这使得即使是简单的结构定义也很困难.
您应该能够从GNU C标准库的源代码中提取您需要的大部分内容.它与Lesser GPL一起许可,这意味着您可以链接到库,而不会影响您的软件许可(或强迫您的客户发布他们的代码).将其移植到您的平台(从而将LGPL编辑的代码保存在自己的库中)可能比从头开始实现您自己的代码更容易.
几个不同的项目采用GNU GLIBC并针对嵌入式系统进行了优化.你可能想看看:
特别是,EGLIBC和uLIBC被设计为在缺少MMU的嵌入式系统上正常运行.
您还可以查看BSD的libc实现
另外还有STLSoft,它在BSD许可下提供了几个库(包括C标准库).我无法证明他们的质量,因为我自己没有使用过他们的代码,但是如果你不能在你的项目中使用LGPL代码,那么值得一看.