0
HaskellではじめるCortex-M3  HaskellではじめるCortex-M3    組込みプログラミング       組込みプログラミング     Kiwamu Okabe
私は誰?☆ Twitter: @master_q☆ ミラクル・リナックス勤務☆ 前はコピー機のOSをNetBSDで作ってた☆ デジタルサイネージのソフト開発してます☆ OSSに興味のある{エンジニア,インターン}募集中です!
Haskell流行ってますよね!
でも何に使ってるの?*   Attoparsec           - 高速パーサコンビネータ*   Bluespec             - SystemVerilogとSystemCのツール実装に使ってる*   Bump Techno...
小さい機器をHaskellで書きたい!マイコンでLEDチカチカしてみましょう☆ STBee Mini☆ CPU: STM32 (Cortex-M3)☆ クロック: 72MHz☆ フラッシュROM: 128kB☆ RAM: 20kB
そこでjhcコンパイラ
Haskellコードを食わせると-- snip Imports --foreign import ccall "c_extern.h Delay" c_delay :: Word32 -> IO ()gpioPtr :: Ptr Word32g...
C言語コードに変換してくれる!static void A_STDftheMain(gc_t gc){   fR$__fControl_Monad_forever__2:;   { *((volatile uint32_t *)(10738094...
実機デモ動画でご覧ください (1分50秒)http://www.nicovideo.jp/watch/sm20143937https://gitorious.org/metasepi/demo-cortex-m3/blobs/master/de...
PR:HaskellでOSを作るプロジェクトはじめました。http://metasepi.masterq.net/乞御期待!
参考資料* 本デモのソースコード  <https://gitorious.org/metasepi/demo-cortex-m3>* Patch適用済みjhcソースコード  <https://gitorious.org/metasepi/jhc...
Upcoming SlideShare
Loading in...5
×

HaskellではじめるCortex-M3組込みプログラミング

2,907

Published on

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,907
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
14
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Transcript of "HaskellではじめるCortex-M3組込みプログラミング"

  1. 1. HaskellではじめるCortex-M3  HaskellではじめるCortex-M3   組込みプログラミング 組込みプログラミング Kiwamu Okabe
  2. 2. 私は誰?☆ Twitter: @master_q☆ ミラクル・リナックス勤務☆ 前はコピー機のOSをNetBSDで作ってた☆ デジタルサイネージのソフト開発してます☆ OSSに興味のある{エンジニア,インターン}募集中です!
  3. 3. Haskell流行ってますよね!
  4. 4. でも何に使ってるの?* Attoparsec - 高速パーサコンビネータ* Bluespec - SystemVerilogとSystemCのツール実装に使ってる* Bump Technologies - モバイル向け連絡先交換のサーバサイド* Gitit - VCSバックエンドWiki* Gtk2hs - Haskellから使えるGtkラッパ* Hakyll - 静的Webサイト生成* Microsoft Research - GHC(Haskellコンパイラ)の研究開発* Mighttpd - nginxぐらい速いWebサーバ* Monadius - グラディウスっぽいゲーム* Pandoc - ドキュメントフォーマット変換* Qualcomm - LuaのBREWバインディングジェネレータ* Standard Chartered Bank - デリバティブリスク分析* Tsuru Capital - 株式トレーディング* Yesod - RailsっぽいWebアプリケーションフレームワークでもこれってみんなPOSIX APIの上でしか動かせませんね...
  5. 5. 小さい機器をHaskellで書きたい!マイコンでLEDチカチカしてみましょう☆ STBee Mini☆ CPU: STM32 (Cortex-M3)☆ クロック: 72MHz☆ フラッシュROM: 128kB☆ RAM: 20kB
  6. 6. そこでjhcコンパイラ
  7. 7. Haskellコードを食わせると-- snip Imports --foreign import ccall "c_extern.h Delay" c_delay :: Word32 -> IO ()gpioPtr :: Ptr Word32gpioPtr = odr where periphBase = nullPtr `plusPtr` 0x40000000 arb2periphBase = periphBase `plusPtr` 0x10000 gpioaBase = arb2periphBase `plusPtr` 0x0800 odr = gpioaBase `plusPtr` 12gpioOut :: Word32 -> IO ()gpioOut v = do poke gpioPtr v c_delay 500000main :: IO ()main = forever $ do gpioOut $ (1 `shiftL` 13) gpioOut $ (1 `shiftL` 13) .|. (1 `shiftL` 15) gpioOut $ (1 `shiftL` 15) gpioOut $ 0
  8. 8. C言語コードに変換してくれる!static void A_STDftheMain(gc_t gc){ fR$__fControl_Monad_forever__2:; { *((volatile uint32_t *)(1073809420)) = 1 << 13; saved_gc = gc; (void)Delay((uint32_t)500000); *((volatile uint32_t *)(1073809420)) = (1 << 13) | (1 << 15); saved_gc = gc; (void)Delay((uint32_t)500000); *((volatile uint32_t *)(1073809420)) = 1 << 15; saved_gc = gc; (void)Delay((uint32_t)500000); *((volatile uint32_t *)(1073809420)) = 0; saved_gc = gc; (void)Delay((uint32_t)500000); goto fR$__fControl_Monad_forever__2; } return;}
  9. 9. 実機デモ動画でご覧ください (1分50秒)http://www.nicovideo.jp/watch/sm20143937https://gitorious.org/metasepi/demo-cortex-m3/blobs/master/demo_movie.avi
  10. 10. PR:HaskellでOSを作るプロジェクトはじめました。http://metasepi.masterq.net/乞御期待!
  11. 11. 参考資料* 本デモのソースコード <https://gitorious.org/metasepi/demo-cortex-m3>* Patch適用済みjhcソースコード <https://gitorious.org/metasepi/jhc-arafura>* STM32マイコンボード 『STBee Mini』 <http://strawberry-linux.com/catalog/items?code=32105>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×