source: sqlite3_toppers/README.txt@ 165

Last change on this file since 165 was 58, checked in by ertl-honda, 11 years ago

追加.

  • Property svn:keywords set to Id
File size: 4.7 KB
Line 
1
2 SQLite3 for TOPPERS/ASP
3
4SQLite3 for TOPPERS/ASPは、TOPPERS/ASPカーネル上でSQLite3を動作させられるように
5したものです。ASPカーネル以外のカーネルを用いる場合でも、無改造または若干の改造
6で使用できるはずです。
7
8
9【ベースとなったSQLite3のバージョン】
10
11SQLite 3.7.15.2をベースとしています。
12sqlite3.cおよびsqlite3.hにはまったく変更を加えていないため、他のバージョンでも
13そのまま使用できる可能性があります。
14
15
16【動作確認に用いた環境】
17
18Sourcery CodeBench Lite 2012.09-63
19(GCC 4.7.2 + Newlib 1.18.0)
20もしくは
21Sourcery CodeBench Lite 2011.03-42
22(GCC 4.5.2 + Newlib ????)
23
24KPIT GNUSH_v12.02 (GCC)
25(GCC 4.7 + Newlib ???)
26
27Cygwin 1.7.17
28
29TOPPERS/ASPカーネル 1.7.0 at91skyeye_gcc簡易パッケージ
30(asp_at91skyeye_armcc-20120310.tar.gz)
31
32TOPPERS/ASPカーネル 1.7.0 apsh2a6a_gcc簡易パッケージ
33
34TOPPERSカーネル向けシミュレーション環境1.0.5
35(skyeye_devm_package-1.0.5.zip)
36
37
38【ファイル構成】
39
40./README.txt : 本ファイル
41./sqlite3
42 ./sqlite3.h : SQLite 3.7.15.2 のヘッダー
43 ./sqlite3.c : SQLite 3.7.15.2 のソース
44 ./sqlite3_toppers.c : TOPPERSで動作させるための各種定義
45 ./sqlite3_toppers.cfg : TOPPERSで動作させるためのカーネルオブジェクト
46 ./sample
47 ./sample1.c : サンプルプログラムのCファイル
48 ./sample1.cfg : サンプルプログラムのCFGファイル
49 ./sample1.h : サンプルプログラムのHファイル
50./libc
51 ./libc_syscall.c : sqliteで使用するnewlib用の下請け関数.
52
53
54【開発環境への依存状況】
55
56- プロセッサアーキテクチャへの依存状況
57
58sqlite3.cには、一部インラインアセンブラを用いたコードがある。しかし、それらは
59パフォーマンス計測用などであり、通常は使用しません。
60それ以外は、特定のアーキテクチャに依存する要素はありません。
61
62- コンパイラへの依存状況
63
64sqlite3.cには、マクロ__GNUC__の定義状態によって条件付きコンパイルを行っている
65個所が多数存在します。したがって、GCC以外のコンパイラにポーティングする場合は、
66それらの個所を適切に修正する必要があります。
67
68- ライブラリへの依存状況
69
70sqlite3.cは、UnixまたはWindowsに依存した実装になっています。
71SQLite3 for TOPPERS/ASPでは、sqlite3.cのUnix用のコードを使用し、必要に応じて
72Unixの機能をエミュレートすることで動作させています。
73コンパイルするには、下記のヘッダが必要になります。
74
75・標準Cのヘッダ
76<assert.h>
77<ctype.h>
78<errno.h>
79<limits.h>
80<math.h>
81<stdarg.h>
82<stddef.h>
83<stdio.h>
84<stdlib.h>
85<string.h>
86<time.h>
87
88・Unix依存ヘッダ
89<fcntl.h>
90<pthread.h>
91<unistd.h>
92<utime.h>
93<sys/types.h>
94<sys/stat.h>
95<sys/time.h>
96
97また、標準関数に加えて下記のUnix依存関数(システムコール)に依存しています。
98
99open
100close
101lseek
102kill
103getpid
104access
105getcwd
106stat
107fstat
108ftruncate
109fcntrl
110read
111write
112fchmod
113unlink
114mkdir
115rmdir
116fchown
117umask
118getuid
119geteuid
120sleep
121utimes
122fsync
123pthread_self
124pthread_equal
125pthread_mutex_init
126pthread_mutex_lock
127pthread_mutex_trylock
128pthread_mutex_unlock
129pthread_mutex_destroy
130
131これらの関数はsqlite3_toppers.cで最低限の実装を提供していますが、必要に応じて、
132再実装するようにしてください。
133
134
135【使用方法】
136
137SQLite3 for TOPPERS/ASPは、次のように使用する.
1381.sqlite3_toppers.c とlibc_syscall.c をコンパイル対象とする.
1392.newlib(libc)をリンクするように -lc を指定する.
1403.アプリのコンフィギュレーションファイルから,sqlite3_toppers.cfg を
141 読み込む.
1424.アプリのCファイルからsqlite3.h をインクルードする.
143
144
145【SQLite機能の制約】
146
147SQLite3 for TOPPERS/ASPでは、インメモリデータベースのみをサポートしています。
148したがって、sqlite3_open関数に渡すデータベース名には、必ず":memory:"を指定して
149ください。
150ファイルを使うためには、open等のシステムコールを適切に再定義する必要があります。
151また、sqlite3ext.hで提供されるAPIはサポートしていません。
152
153
154【使用するカーネルリソース】
155
156SQLite3 for TOPPERS/ASPでは、以下のカーネルリソースを使用する.使用す
157るカーネルリソースは次の通りである.これは sqlite3_toppers.cfg に定義
158されている.
159
160 セマフォ : 6個
161
162
163【newlib(libc)の下請け関数】
164
165SQLite3 for TOPPERS/ASPでは、newlib(libc)の下請け関数を幾つか用意する
166必要があり,これらをターゲット毎に用意する必要がある.
167
168 void *_sbrk_r(struct _reent *ptr, ptrdiff_t incr)
169 void __malloc_lock (struct _reent *ptr)
170 void __malloc_unlock (struct _reent *ptr)
171
172libc_syscall.c ではこれらのサンプル実装があり,それぞれ次のように実装
173している.
174
175 _sbrk_r()
176 ・1Mの配列をグローバル変数として確保して,そこから領域を確保して返す.
177 サイズを変更する場合は,HEAP_SIZE を変更すればよい.
178 __malloc_lock()
179 ・タスクコンテキスの場合は,ディスパッチ禁止によりロックを実現.
180 __malloc_unlock()
181 ・タスクコンテキスの場合は,ディスパッチ禁止によりロックを実現.
182
183 【コンフィギュレーション】
184
185 libc_syscall.c
186 ・HEAP_SIZE
187 ・sbrkで確保するメモリ領域のサイズの指定.
188
189 sqlite3_toppers.c
190 ・TOPPERS_SQLITE_OMIT_DEFAULT_SYSCALL
191 ・UNIXのシステムコールの最低限の実装を使用しない.
192 ・TOPPERS_SQLITE_OMIT_DEFAULT_TIME
193 ・sqlite3_toppers.c における time() の実装を使用しない.
194 ・TOPPERS_SQLITE_OMIT_DEFAULT_PTHREAD
195 ・sqlite3_toppers.c における pthread 関連の関数の実装を使用しない.
196
197以上
Note: See TracBrowser for help on using the repository browser.