6
A
回答
3
那么,这取决于你如何定义'操作系统'。
- 如果将其定义为具有在x86硬件上运行的GUI的东西;当然;大多数数据库在其他系统上运行得很好。
- 如果您将其定义为实现POSIX规范或以其他方式允许线程或进程运行并提供安全措施的东西,那么您将会失去一些需要多线程操作的东西,但是您仍然可以正常运行;有很多选择。
- 如果您将其定义为根本没有任何文件操作的东西,并且没有实现很多C标准库,那么您几乎不走运。
您的基于ARM的设备几乎可以肯定有一个随工具链一起提供的C标准库。 Newlib是深度嵌入式系统的热门选择;它是默认包含在例如免费的CodeSourcery和YARTGO工具链中的。但是,在这之前你需要实现一些系统调用。你可以做,例如,printf()
并且文本出现在控制台上吗? malloc()
怎么样?如果这些功能和其他功能不起作用,我建议您实施它们。基本的系统调用是Newlib预计有:
int _system (const char *);
int _rename (const char *, const char *);
int _isatty (int);
clock_t _times (struct tms *);
int _gettimeofday (struct timeval *, struct timezone *);
void _raise (void);
int _unlink (void);
int _link (void);
int _stat (const char *, struct stat *);
int _fstat (int, struct stat *);
caddr_t _sbrk (int);
int _getpid (int);
int _kill (int, int);
void _exit (int);
int _close (int);
int _open (const char *, int, ...);
int _write (int, char *, int);
int _lseek (int, int, int);
int _read (int, char *, int);
大多数的这些都可以存根,但是你需要,例如,_write()
用于printf()的(和其他写操作),_read()
用于读取操作,并_sbrk()
为的malloc和其他内存管理功能。例如,请参阅http://wiki.osdev.org/Porting_Newlib以获得最低限度的实施。您对这些函数的定义将决定数据库的工作方式;如果_write()向UART发送一个字符,那么你的数据库将不会非常有用。
随着标准库的工作,sqlite和其他数据库应该工作。他们会从sqlite的合并做这样的事情在shell.c:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
#include "sqlite3.h"
#include <ctype.h>
#include <stdarg.h>
#include <signal.h>
#include <pwd.h>
#include <unistd.h>
#include <sys/types.h>
您需要的一些执行情况。这不需要操作系统。有了C库,它可以工作,但没有一个,你自己。
相关问题
- 1. 在没有操作系统的嵌入式系统中的malloc
- 2. ThreadX操作系统的嵌入式wxWidgets
- 3. 数据库无操作系统
- 4. 嵌入式操作系统和桌面操作系统的区别
- 5. 嵌入式系统
- 6. 选择合适的MCU为FreeRTOS操作系统的嵌入式系统
- 7. C嵌入式系统的XML库
- 8. 需要提高嵌入式系统
- 9. 操作系统
- 10. 统计数据库系统
- 11. Pyserial - 嵌入式系统
- 12. 嵌入式设备系统
- 13. WCF和嵌入式系统
- 14. ZigBee和嵌入式系统
- 15. 嵌入式文件系统?
- 16. 嵌入式系统播客
- 17. 嵌入式系统 - 轮询
- 18. 加入关系数据库系统
- 19. 作为嵌入式操作系统的Android限制
- 20. Android操作系统更新系统
- 21. 嵌入式文件系统中的数据丢失关闭系统后的UBIFS
- 22. 嵌入式系统上的SQLite数据库损坏
- 23. FASM操作系统
- 24. Linux操作系统
- 25. 操作系统 - TLB
- 26. 实时嵌入式操作系统的线程调度程序
- 27. 与操作系统无关的LLVM IR系统调用
- 28. 与操作系统无关的API来监视文件系统?
- 29. 无法附加数据库操作系统错误
- 30. 将Windows软件移植到嵌入式/实时操作系统
您是否会通过编辑原始文章详细说明您的意思是不需要操作系统?我假设你的意思是你所寻找的数据库会知道如何执行自己的磁盘访问。我对么? – octopusgrabbus 2012-07-12 13:59:03
为什么你不想用二进制文件制作自己的基于文件的数据库系统?我的意思是,你想要一个支持SQL语法的数据库?以及什么样的嵌入式设备?一个简单的AVR/PIC/ARM左右?它应该有多大/小的占地面积? – DipSwitch 2012-07-12 14:03:23
“为什么不呢?”因为在受教育的情况下,与具有该领域经验的多个开发人员一起工作的成熟数据库引擎相比,第一次尝试可能会很差。这也可能浪费时间。 – 2012-07-12 14:10:03