1 / 21

組み込み環境における ユーザレベル・デバイスドライバの検討 (進捗報告)

組み込み環境における ユーザレベル・デバイスドライバの検討 (進捗報告). 松原 克弥 株式会社イーゲル. これまでの経緯. スレッドの挙動を調査 RT タスク vs Non-RT タスク. 本活動の背景と目的. ユーザレベルでデバイスドライバを実現したい 開発が容易 ドライバのバグによるシステムダウンを軽減 (ジーピーエルの回避) ユーザレベル・デバドラ実現のためのいくつかの問題 I/O メモリ、物理メモリへのアクセス 割り込み要求( IRQ )の転送 割り込みへの応答速度 ‥‥ カーネル 2.6 の新機能

hayfa-david
Download Presentation

組み込み環境における ユーザレベル・デバイスドライバの検討 (進捗報告)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 組み込み環境におけるユーザレベル・デバイスドライバの検討(進捗報告)組み込み環境におけるユーザレベル・デバイスドライバの検討(進捗報告) 松原 克弥 株式会社イーゲル IGEL Co.,Ltd. / Renesas Solution Corp.

  2. これまでの経緯 • スレッドの挙動を調査 • RTタスク vs Non-RTタスク IGEL Co.,Ltd. / Renesas Solution Corp.

  3. 本活動の背景と目的 • ユーザレベルでデバイスドライバを実現したい • 開発が容易 • ドライバのバグによるシステムダウンを軽減 • (ジーピーエルの回避) • ユーザレベル・デバドラ実現のためのいくつかの問題 • I/Oメモリ、物理メモリへのアクセス • 割り込み要求(IRQ)の転送 • 割り込みへの応答速度 • ‥‥ • カーネル2.6の新機能 • NPTL(Native POSIX Thread Library) • スケジューラの改善(O(1)スケジューラ等) • カーネルプリエンプション • ‥‥ IGEL Co.,Ltd. / Renesas Solution Corp.

  4. 組み込みソフトウェア開発の現状 • 新しいデバイスのためのドライバ開発が多い • アプリケーションが直接デバイス制御 • 遅延の最小化 • デスクトップPCアプリケーションよりもデバイスとアプリケーションが密接に関係 • H/W仕様の隠蔽 IGEL Co.,Ltd. / Renesas Solution Corp.

  5. ユーザレベル・デバイスドライバ ユーザ空間でデバイスドライバを実装 • 期待される効果 • 豊富なツール・ライブラリの利用(例:ファイル) • 開発とデバッグの容易さ • システムハングの軽減 • アプリケーションとの距離削減 • ‥‥ • 関連研究 • Peter Chubb, “Get more device drivers out of kernel,” OLS2004. IGEL Co.,Ltd. / Renesas Solution Corp.

  6. デバイスドライバに必要な機能 • I/Oメモリへのアクセス • レジスタ入出力によるデバイス制御、データ入出力 • 割り込み受信と処理 • 物理メモリの確保とアクセス • DMA等を用いてメモリへ直接アクセスするデバイスに対して必要 • DMAでは、連続物理メモリの確保が必要なことも • CPUのロック,リアルタイム • アプリケーションへのインタフェース IGEL Co.,Ltd. / Renesas Solution Corp.

  7. ユーザレベル・デバドラにおける割り込み受信と処理ユーザレベル・デバドラにおける割り込み受信と処理 • ファイルI/Oによる割り込み受信 • 割り込み番号別のデバイスファイルを用意 • 上記デバイスファイルへread()をすると、割り込みが起きるまでブロック IGEL Co.,Ltd. / Renesas Solution Corp.

  8. ユーザレベル・デバドラにおけるメモリへのアクセスユーザレベル・デバドラにおけるメモリへのアクセス • メモリマップ(mmap)によるI/Oメモリへの直接アクセス • /dev/memもしくは専用デバイスファイルをopen(), mmap() • 一度mmapしてしまえば、あとはこれまでどおりアクセス • 物理メモリは、確保してからmmap IGEL Co.,Ltd. / Renesas Solution Corp.

  9. ユーザレベル・デバドラにおけるアプリケーションへのインタフェースユーザレベル・デバドラにおけるアプリケーションへのインタフェース • ユーザレベルデバドラでは、アプリケーションと同じユーザ空間に存在できるので、プロセス間通信、共有メモリ等様々なインタフェースを実現可能 • アプリケーションとの統合も容易 IGEL Co.,Ltd. / Renesas Solution Corp.

  10. ユーザレベル・デバドラにおけるCPUのロック・リアルタイムユーザレベル・デバドラにおけるCPUのロック・リアルタイム • RTスレッドを使えばある程度強引には‥ • これは継続審議で。 IGEL Co.,Ltd. / Renesas Solution Corp.

  11. 実装(シリアルドライバ) • 実装環境 • RTS7751R2D • Renesas SH4 • SM501 コンパニオンチップ内蔵 UART • 8250互換 • 1バイト入出力とFIFOバッファ入出力の2モード • Linux 2.6.13.4 • CONFIG_PREEMPT=y • Glibc 2.3.3 IGEL Co.,Ltd. / Renesas Solution Corp.

  12. 処理内容 • 割り込み処理 • データ受信 • 送信バッファ空き • I/Oメモリアクセス • SM501 レジスタ入出力 IGEL Co.,Ltd. / Renesas Solution Corp.

  13. I/Oメモリマップ・ドライバ 割り込みフック・ドライバ SM501 UART ソフトウェア・アークテクチャ バッファ データ入出力 ユーザレベル UARTデバドラ ターミナル アプリ Linuxカーネル IGEL Co.,Ltd. / Renesas Solution Corp.

  14. 割り込みフック・ドライバ static int irqhook_proc_open(struct inode *inop, struct file *filp) { ... request_irq(ipp->irq, irqhook_proc_irq_handler, SA_INTERRUPT, ipp->devname, ipp); ... } static ssize_t irqhook_proc_read(struct file *filp, char __user *bufp, size_t len, loff_t *ppos) { .... prepare_to_wait(&ipp->q, &wait, TASK_INTERRUPTIBLE); pending = atomic_read(&ipp->count); if (pending == 0) schedule(); ..... } IGEL Co.,Ltd. / Renesas Solution Corp.

  15. I/Oメモリマップ・ドライバ int iommap_mmap(struct file *filp, struct vm_area_struct *vma) { size_t size = vma->vm_end - vma->vm_start; unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; vma->vm_flags |= VM_RESERVED; vma->vm_flags |= VM_IO; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); /* Map each page to users' virtual memory space */ if (io_remap_page_range(vma, vma->vm_start, offset, size, vma->vm_page_prot)) return -EAGAIN; return 0; } IGEL Co.,Ltd. / Renesas Solution Corp.

  16. UARTドライバ while (1) { .... if (read(fd, &n_pending, sizeof(int) > 0) { if ((status = SM501_UART0_LINESTAT(&iomem)) & 0x01) { do { buffer[count]= SM501_UART0_RXBUFF(&iomem); status = SM501_UART0_LINESTAT(&iomem); count++; if(count >= BUFFER_SIZE){ loop++; count = 0; if(loop >= LOOP_COUNT) goto end; } while((status & 0x01)&&(max_count-- > 0)); } .... } IGEL Co.,Ltd. / Renesas Solution Corp.

  17. 実験 実験を始めたところです‥ • シリアル入出力 • シリアルデバイスに対して1MBのREAD/WRITEを行ってスループットを測定してみました。 • SM501 バイト入出力モードを使用 • カーネルドライバは2.6.13.4に同梱のもの • ユーザレベル・デバイスドライバはRTタスクとして実行 • ユーザレベル・デバイスドライバはシリアル入出力プロセスと一体化 • R2DボードとノートPC(TeraTerm)をシリアル・クロスケーブルで接続 IGEL Co.,Ltd. / Renesas Solution Corp.

  18. 実験結果 • データサイズ:1MB • バッファサイズ: 1KB • ボーレート: 300 or 38400 bps • 測定値:同一実験を10回行った結果の平均 IGEL Co.,Ltd. / Renesas Solution Corp.

  19. 所感 • 少なくとも、低負荷(じゃまするものがいない)環境では、オーバヘッドは軽微? • 38.4kbpsのときはむしろULDDのほうが速い。 • 解析する価値あり→これからします。 • システム安定性、コーディングやデバッグの容易さ、豊富なユーザランド機能が魅力 IGEL Co.,Ltd. / Renesas Solution Corp.

  20. 今後の課題 • 高負荷環境での挙動 • RTタスク / Non-RTタスク • PC環境との比較 • 他デバイスでの評価 • カーネルレベルDDとユーザレベルDDの特性を整理 • 新規性を模索中‥ IGEL Co.,Ltd. / Renesas Solution Corp.

  21. 議論 IGEL Co.,Ltd. / Renesas Solution Corp.

More Related