不況で倒産寸前のベンチャー企業(?)でプログラマー歴2年になった 新米プログラマーの日記のような雑記です。
welcome 猫並プログラマーの奮闘日記 !
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
category : スポンサー広告 

え~っとLinuxでの開発環境について
今は画像処理の仕事のためLinux移植は中止(まぁX以外は動いてるんですけどw)してるんですが。

今日、不思議な問い合わせがありまして「Linuxアプリの開発環境を教えてください」・・・へ?
たしかにLinuxの動作を保障しているボード売ってますが、Linuxのことの問い合わせまでサポートしてませんよw
大体、どこのメーカーでもボードに関してのみ受け付けています。
さすがに顧客に対して「ググれ」とも言えないので一般的なものを列挙しておきました。

一応ココにも書いておこうかな。

まず、デバッガは
GDB
SDB(symbolic debugger)

こんなくらいかな開発環境は
Eclipse
KDevelop

個人的には
vi
Emacs
geditor
くらいで充分だと思いますが。

それにしても、Linuxの組込みが初めてだったのかな?
それでも、普通調べるでしょ・・・。
スポンサーサイト
category : Linux移植  comment : 0  track back : 0

thema:Linux - genre:コンピュータ


SH4A(7780)搭載ボードにLinuxを移植する(USBが動いたよ!)
実は月曜には動いてました(汗

今まではまってた原因はPCIのDMA転送です。
PCIのキャッシュコヒーレンシのサポートを無効にしないと
一貫性が無いということでエラーになってしまうみたいです。

PCIは動いていると過信していたのがまずかったなぁorz

USBのコンフィギュレーションは以下
USB コンフィギュレーション
CONFIG_SH_PCIDMA_NONCOHERENT=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_DEVICEFS=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_OHCI_HCD=y


USBメモリ
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_USB_STORAGE=y


赤字の部分は重要です。
EHCIはUSB2.0のホストコントローラドライバですが、OHCIを流用してる部分があるので
OHCIも有効にしてください。

後、USBメモリは認識するとSCSIのHDDとして動作します。
なのでSCSIとSCSIストレージを有効にしておきましょう。

・・・で実はUSBメモリを読込んでDebianコアとX、ウィンドウマネージャの起動まできてるのですが
問題もあったり書くことも多いので地道に書こうと思います。

category : Linux移植  comment : 0  track back : 0

thema:UNIX/Linux - genre:コンピュータ


SH4A(7780)搭載ボードにLinuxを移植する(ビデオカード編)
全然、更新しなかったこの話題・・・。
別に進めてなかったわけではなくて、USBが全然動かないだけです;;
気分を変える意味で先にディスプレイに表示してみようと思いビデオカード関連を進めてみました。

PCがディスプレイに表示してる仕組って知っている人はどれくらいいるのかな?
たぶん、ゲーム作ったりとかDirectXとかいじってる人は知ってるでしょう。

簡単に説明するとフレームバッファと呼ばれるメモリバッファに描画する情報を入れることで、
ビデオカード(又はVGAコントローラ)のドライバがディスプレイに転送します。

WindowsはAPIで隠れてたりするのでわかりにくいですが、Linuxの場合はフレームバッファがデバイスとしてファイルシステム登録されていて見ることができます。(/dev/fb0)

まず、社内にPCIバスのビデオカードを漁るととりあえず、
・Matrox Milenium (VRAM 8MB)
・Nvidia Via (VRAM 32MB)
の二つを発見。
とりあえず、Nvidiaが対応できれば描画能力に不安が無くなるのでNvidiaに決定。

カーネル設定は特に難しいところは無いです。
主にconfigで
グラフィックデバイスを有効にする。
フレームバッファサポートを有効にする。
必要なビデオカードのフレームバッファ又はバーチャルフレームバッファ(非推奨)をサポートする。

あとはファイルシステムの/devにフレームバッファfb0をmknodで追加するだけです。

具体的な内容はちょっと忘れてしまったので明日追記しますw
----遅くなってしまったけど追記---

VGAのコンフィギュレーションは以下

CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB_NVIDIA=y
CONFIG_FB_RIVA=y
CONFIG_FB_MATROX=y
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_VIRTUAL=y
CONFIG_LOGO=y

上手くいくとカーネル起動時にディスプレイにペンギンさんが出ます。
category : Linux移植  comment : 0  track back : 0

thema:UNIX/Linux - genre:コンピュータ


SH4A(7780)搭載ボードにLinuxを移植する(USBが動かない!)
もうちょいなんですけどねー。
USBメモリ上のファイルシステムをマウントすればDebianが起動する!はずなんですけど
USBが思うように動いてくれない;;
なぜにー。
USBコントローラはNECのupd720101を載せてるんですが。
USB2.0ドライバーが上手く動いてくれません;;EHCIに準拠してるはずなんだけどなー。

# usb 1-2: new high speed USB device using ehci_hcd and address 2
usb 1-2: device descriptor read/64, error -110
usb 1-2: device descriptor read/64, error -110
usb 1-2: new high speed USB device using ehci_hcd and address 3
usb 1-2: device descriptor read/64, error 18
usb 1-2: device descriptor read/64, error 18
usb 1-2: new high speed USB device using ehci_hcd and address 4
usb 1-2: device not accepting address 4, error -110
usb 1-2: new high speed USB device using ehci_hcd and address 5
usb 1-2: device not accepting address 5, error -110
hub 1-0:1.0: unable to enumerate USB device on port 2

こんな感じのエラーが多発。
エラーの内容が調べてもよくわからんのですよー。
初期化が間違ってるのかな・・・。
upd720100を参考に(というかそのまんま)書いたので、正直自身が無い・・・(・・;)

今月から始まる仕事がキャンセルになってしまい・・・会社大ピンチです。

それなのに全然、移植が進んでないから肩身がせまいよー(/_<。)ビェェン
category : Linux移植  comment : 0  track back : 0

thema:Linux - genre:コンピュータ


SH4A(7780)搭載ボードにLinuxを移植する(やっと動いたbusybox編)
やっと動きましたよー。∩(´∀`)∩busyboxだけど。
開発中のボードなんでログは省略して書いときます。
いままで発生していた問題はinitプロセスが途中で終了してpanicになったいたこと。

Kernel panic - not syncing: Attempted to kill init!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pc = 88032492
*pde = 00000000
Oops: 0000 [#1]
Modules linked in:

こんな感じでした。これが全然、原因不明でして・・・かなり頭が痛かったです。
ライブラリがおかしいのかと思いuClibcをためしたり、ツールチェインが悪いのかとも思いました。
散々調べた結果…カーネルのMMUの設定でしたorz
MMUの項目にAdd LRU list to track non-evictable pages UNEVICTABLE_LRUというのを有効にしたら直りました・・・。
UNEVICTABLE_LRUというのはページ空間を解放するときに解放させない領域のリスト(UNEVICTABLEリストというらしい)を持っていてスキップさせるらしいです。
主に64bit対応のためみたいなことが書いてあったので、気にしてなかったのですがリストの対象に
ramfsが入ってたのでもしやと思い有効にしたら動きました。

動いたのですが次に起きたのが以下
Freeing unused kernel memory: 96k freed

Please press Enter to activate this console.

これはすぐに解決しました。
仙石先生の日記
のなかに見つけまして。
おそらくこれだ!と思いました。
で、まずデバイスを以下のように作成。
mknod ttySC0 c 204 8
mknod zero c 1 5
mknod ram0 b 1 0
ln -s ttySC0 ttyS0(<-これ重要)

initramfsのinitスクリプトにexec /bin/cttyhack /bin/shを追加したら
Freeing unused kernel memory: 96k freed
/bin/sh urned off
# ls
Segmentation fault
# echo hello world
hello world

動いたー!わぁいヽ(゚ー゚*ヽ)(ノ*゚ー゚)ノわぁい
これのおかげで、しばらく0時帰りだったので嬉しさが半端無かったですw
「シェル動いたくらいではしゃぐなよ」目線を無視して叫んじゃいました(・・。)ゞ テヘ

しかし、これで気づいた勘違いがあってinitramfsをマウントしたときカーネルはinitスクリプトをinit扱いするんですね。/sbin/initじゃなかったんだ・・・。
なのでinitスクリプトが終わるとpanicになります(・・;)
まぁ動いたのでよしとしようw

これで心おきなくシルバーウィークに入れます。
・・・まぁ、実家で稲刈りを手伝わされるんですけどねっ(・・;)
category : Linux移植  comment : 0  track back : 0

thema:Linux - genre:コンピュータ


プロフィール

猫原

Author:猫原
猫でもわかる程度の能力な新米プログラマーです。

扱える言語:
アセンブラ(intel系,SH系),C/C++,C#,
java,PHP,etc...

趣味
アニメとかゲームとかプログラムとか
ようするにオタク
(特にガンダム大好きです)

最近のマイブームはニコ動でアイマス架空戦記見ること
(千早かわいいよ千早)

フリーエリア
検索フォーム
ブロとも申請フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。