fc2ブログ

socket send ではまる

何も考えずに書いていた。
send(dev->newsock, (const char*)rspBuf, 4 , 0 );

こちらの方が良いみたい
send(dev->newsock, (const char*)rspBuf, 4 , MSG_NOSIGNAL );
スポンサーサイト



SiliconLab CP2104 linux kernel 2.6.35系対応

USB Serial デバイスの CP2104 を linux kernel 2.6.35 系で動かそうとしたら、動かなかった、、、ので、ドライバとにらめっこ。

BeagleBoard Black (BBB) 入手 その3

BeagleBoard Black (BBB) 用に カーネルコンパイル

記事はまだ完成していません。

参考にしたのは下記のサイトです。
http://wiki.beyondlogic.org/index.php/BeagleBoneBlack_Building_Kernel#uBoot_mkimage

1. クロスコンパイルのLinux環境
Ubuntu 13.04 以降がよいみたいです。 12.10までには ARMの必要なツールが入っていないとか。
コンパイラのインストール( gcc-arm-linux-gnueabi と gcc-arm-linux-gnueabihf が有るみたいです。)
$ sudo apt-get install gcc-arm-linux-gnueabihf

2. 必要なツールのインストール
$ sudo apt-get install git
$ git config --global user.email "jikiba@jikiba.com"
$ sudo apt-get install -y lzop build-essential ncurses-dev

$ wget ftp://ftp.denx.de/pub/u-boot/u-boot-latest.tar.bz2
$ tar -xjf u-boot-latest.tar.bz2
$ cd u-boot-2013.10 <-- 先ほどの解凍で作成されたフォルダ
$ make tools
$ sudo install tools/mkimage /usr/local/bin

3. カーネルソースの入手

$ mkdir ~/BeagleBoneBlack
$ cd ~/BeagleBoneBlack
$ git clone https://github.com/beagleboard/kernel.git
$ cd kernel
$ git checkout 3.8
$ ./patch.sh

$ cp configs/beaglebone kernel/arch/arm/configs/beaglebone_defconfig
$ wget http://arago-project.org/git/projects/?p=am33x-cm3.git\;a=blob_plain\;f=bin/am335x-pm-firmware.bin\;hb=HEAD -O kernel/firmware/am335x-pm-firmware.bin
$ cd kernel
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- beaglebone_defconfig -j4
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage dtbs -j4
省略。。。。で コンパイル結果
Image Name: Linux-3.8.13-00726-g147b373
Created: Mon Dec 30 23:57:09 2013
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4352080 Bytes = 4250.08 kB = 4.15 MB
Load Address: 80008000
Entry Point: 80008000
Image arch/arm/boot/uImage is ready

$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage-dtb.am335x-boneblack -j4
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules firmware -j4

作成したイメージの名前を変更(必要あらば)
~/BeagleBoneBlack/project/kernel/kernel/arch/arm/boot$ mv uImage uImageJikiba
SDcard へコピー(既にSDカードにて起動するデータを書き込んでいる事が前提)
~/BeagleBoneBlack/project/kernel/kernel/arch/arm/boot$ sudo cp uImageJikiba /media/jikiba/Angstrom/boot/
SDcard へ移動
$ cd /media/jikiba/Angstrom/boot
/media/jikiba/Angstrom/boot$ sudo rm uImage
/media/jikiba/Angstrom/boot$ sudo ln -s uImageJikiba uImage

これで このuImageにて起動

BeagleBoard Black (BBB) 入手 その2

BeagleBoard Black (BBB) に 外付けバスデバイスを接続する方法を纏めときます。

BBBで使われている CPU AM335x には general-purpose memory controller (以下 GPMC)のペリフェラルが入っています。このGPMCに対して Address / Data / Ctrl 線を繋げれば動くはずなのですが、このポートには eMMC 2G が接続されており、プログラムをeMMC にて実行している場合、GPMCで使用する事は出来ません。 よって、SDカードからの起動が大前提になります。 GPMCの Address / Data / Ctrl 線は P8,P9で外部に出されています。 また、下記手順ではなくkernel を最初から作り直してしまう方法もあります。


eMMCが登録されていると何故GPMCをDevice Tree Overlay出来ないかと言うと、 eMMCに使われているポートが排他利用で指定されているためです。下記ファイルにて確認できます。
/lib/firmware/BB-BONE-eMMC1-01-00A0.dts

手順:
1. SDカード起動の Angstrom Distribution を準備
SDカードから起動を行えた場合、USER3 LED が点滅しません。

2. eMMCを登録から外せるようにするために
SDカードから起動後、 /boot/uEnv.txt ファイルを開き 下記を追記
capemgr.disable_partno=BB-BONE-EMMC-2G
同様に /media/BEAGLE_BONE/uEnv.txt ファイルを開き 下記を追記
capemgr.disable_partno=BB-BONE-EMMC-2G

再起動
< 何故 同じ記述を2か所に必要なのか。>

3. eMMC の確認と取り外し
最初に現状の登録の確認
sh-4.2# cat /sys/devices/bone_capemgr.8/slots
0: 54:PF---
1: 55:PF---
2: 56:PF---
3: 57:PF---
4: ff:P-O-- Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI

4番目に eMMCが登録されている事が分かる。
eMMCを外す
sh-4.2# echo -4 >/sys/devices/bone_capemgr.8/slots

外れている事を確認
sh-4.2# cat /sys/devices/bone_capemgr.8/slots
0: 54:PF---
1: 55:PF---
2: 56:PF---
3: 57:PF---
5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI

< 2にて disableにしているのに何故 登録されている状態で起動されるのか。 >

4. dts overlay にて GPMCポートに設定
使用するポートを exclusive-use で排他してない場合、何処かのタイミングで書きかえられている場合がある。

pinctrl-gpmc.dts を作って、、、、

sh-4.2# dtc -O dtb -o pinctrl-gpmc-00A0.dtbo -b 0 -@ pinctrl-gpmc.dts
sh-4.2# cp ./pinctrl-gpmc-00A0.dtbo /lib/firmware/
sh-4.2# echo pinctrl-gpmc >/sys/devices/bone_capemgr.8/slots

登録されているか確認
sh-4.2# cat /sys/devices/bone_capemgr.8/slots

5. 動作確認
下記リンクのtest.c を元に動作確認
https://groups.google.com/forum/#!category-topic/beagleboard/gpmc/QENqyIYTlO0


6. 追記で
GPMCのアドレスを 3:0 程度までなら P9側のポートを使用する事で事足りるのですが、上位のアドレスまで使用する場合は HDMI側も外す要があります。BB-BONEL-HDMT と BB-BONELT-HDMIN の両方を無効化



----
BeagleBoneBlack A5C
Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img.xz
sdcard 4G

BeagleBoard Black (BBB) 入手 その1

BeagleBone Black (以下BBB)を 入手する事になりました。
基本、私が見つけた新しい事など、存在しないと思いますが、一応 調べた事を
順不同で記述いたします。

1.SDCARD からの起動ディスクを作っとこう。
http://beagleboard.org/Getting%20Started に、手順があります。
beaglebone-getting-started.zip を 落として、最新版のバイナリを入手する。
Win32 Disk Imagerを使って、最新版バイナリを SDCARDに書き込む
BBBに SDCARDに入れて起動。

Q. SDCARDから起動できるのですが、内蔵ROMへboot image のコピーはどうやってやるんだろうか?
一番最後に書いていた。。。Step #8: Boot your board off of the SD card

使用したファイルは下記を書きこみました。
BeagleBone Black (eMMC flasher)
Angstrom Distribution (BeagleBone Black - 2GB eMMC) 2013-06-20 - more info - bittorrent

4GBのSDCARDを使用して、 CALSS 2 だったためか 1時間10分程度かかりました。


2. BBBをUSBケーブルで接続時に見える USBメモリ空間は BBB上では下記の場所です。
/media/BEAGLEBONE

3. UART2( 0x48024000 - 0x4802_4FFF ) を使ってみる。
http://blog.pignology.net/2013/05/getting-uart2-devttyo1-working-on.html
uEnv.txt を下記のように変更
root@beaglebone:/media/BEAGLEBONE# cat uEnv.txt
optargs=quiet drm.debug=7 capemgr.enable_partno=BB-UART2

再起動で確認
root@beaglebone:/proc/tty/driver# cat OMAP-SERIAL
serinfo:1.0 driver revision:
0: uart:OMAP UART0 mmio:0x44E09000 irq:88 tx:553 rx:0 RTS|CTS|DTR|DSR
2: uart:OMAP UART2 mmio:0x48024000 irq:90 tx:0 rx:0 CTS|DSR

root@beaglebone:/dev# ls -al | grep ttyO
crw-rw---- 1 root tty 249, 0 Jan 1 00:21 ttyO0
crw-rw---- 1 root dialout 249, 2 Jan 1 00:21 ttyO2

P9.21 UART2_TXD
P9.22 UART2_RXD









プロフィール

jikiba

Author:jikiba
技術者です。 日々挫折していますし、困ったことを 忘れながら 楽しく暮らしていきたいと思いますが、そうもいかないようです。 
コメントを頂くと嬉しいのですが、技術系にコメントが付かない事を寂しく感じています。

検索フォーム
twitter
最新記事
最新コメント
カテゴリ
メールフォーム

名前:
メール:
件名:
本文:

リンク