MPLABXの不具合が再現した
MCCで新たにProjectを起こして、起動確認
==>Breakポイントの表示もStep実行も問題なし
debug.cとdebug.h,ring_buffer.cとringbufer.hを追加して動作確認
==>Breakポイントの表示もStep実行も問題なし
少しずつ機能を追加して・・・
comm.cとcomm.hを追加して動作確認
==>不具合再現!
実は、全部組み込んでも不具合は再現しない、いわゆる『お化け』騒動で終わることを期待していたのですが、目論見が外れました。まさか、Cプログラムの書き方でこんなことが起きるとは、思ってもみませんでした。comm.cの関数呼び出しを外しても不具合状況に変化はありません。つまり、プログラム実行時に生じる不具合ではなく、comm.cのソース・コード自体に問題があるようです。
MPLABXがソース・コードを表示しようとして、どこかで重大なエラーに遭遇して、エラー・コードも吐かずに止まってしまうものと思われます。orz
もう少し、調査を続けます。
MPLABXの動作がおかしくなった
突然、MPLABXの動作がおかしくなりました。
ユーザ・プログラムの初期化コードに設定したブレーク・ポイントで停止しているのに、当該プログラム行をハイライト表示してくれません。Program Memoryウィンドウの表示を確認すると、ブレーク動作は正しいように思われます。さらに、その状態からStep実行しようとするとデバッガが停止してしまいます。RUNすれば、PICは正しく動作して、ホスト間の通信も正常に行うことが出来ます。
PICkit3を替えても、MPLABXを(3.61から3.65に)アップデートしても不具合状態は解消しません。orz
困ったことになりました。このまま開発を続けるか?トラブルシュートを続けるか?
う~む・・・
ふと思い立って、PIC16F1938を使った他のProjectで試してみると・・・
ちゃんとブレークしたプログラム行をハイライト表示しました。
(パチパチパチ~)<==喜んでいる場合ではない!
詳しいことは分かりませんが、開発しているプログラムのどこかが気に入らなくて、MPLABXが正常に動作できなくなっているようです。
現在のProjectフォルダは凍結して、新たなProjectを立ち上げ直し、そこにコードを順番に移植して、どこでおかしくなるか?調べてみようと思います。
MCCでサクッと開発開始
Tools ==> Embedded ==> MPLAB Code Configuratorと辿って、MCCを起動すると下のような画面が表示されます。(<==起動に時間が掛かります)今回はホストとPIC間の通信にUARTを使い、Flash Programmingを行うので、Device ResourcesからEUASRTとMEMORY(<==下のLibraryの中にある)を選択して、Project Resourcesに持ってきました。で、Generateボタンをクリックして・・・
サクッと開発環境が構築されました。(パチパチパチ~)
あとはゴリゴリ、ゴリゴリ、コードを書き連ねて行きます。
これまでRaspiをホストにするときは、もっぱらI2Cを使ってきました。当初の構想でもI2Cを使う予定でした。ところが最新のデバイス(PIC32MK)にI2Cが搭載されていない(必要ならソフト処理でI2C通信を行う)ことが判明しました。UARTで1対Nの通信を行う(通信の始めにアドレス・バイトを送信して相手を指定する)機能を組み込み、I2Cの機能をUARTで実現しようとしています。どうやらMicrochipはI2CからUARTへの移行を進めているようです。
RaspiにはUARTも搭載されているので、I2CからUARTへの変更は可能です。調べてみると、ユーザが使えるのはRaspi-3 とZero Wはmini UART、他のモデルはPL011で、取り扱いが異なるようなのです。(詳しくはここ↓)
The Raspberry Pi UARTs - Raspberry Pi Documentation
Raspi-3はCORE周波数を250MHz固定にしないと上手く通信できない(通信速度が変化してしまう)とか、enable-uartの設定が必要だとか・・・
モデルによって取り扱いが異なるのはユーザの混乱を招きそうなので、『USB-シリアルを採用』することにしました。
denshikobo's blog再開のお知らせ
暫く更新していなかった、denshikobo's blogを再開致しますので、宜しくお願い申し上げます。
PICの新しい開発環境に関する構想(<==妄想)を得て、今年の6月から開発し始めました。初期構想から二転三転して(何時ものことです)、ようやく『これ』という形が見えてきました。
『基板にUSB-シリアル変換ICを搭載して、USBケーブルで接続する』と言う形です。そうすることで、RaspiにもRaspi ZeroにもPCにも接続できるようになります。
(パチパチパチ~)
OrangePI PCにsambaをインストールした
(2016.12.01)
OrangePI PCとRaspi間でファイルを送受出来るようになったので、既存のscriptファイルを使ってsambaをインストールします。
$ scp pi@192.168.2.101:./samba_install.sh ./
中身はこんな感じです。
#!/bin/bash
#<Install samba>
sudo apt-get install samba samba-common-bin
sudo smbpasswd -a pi
sudo mkdir /opt/samba
sudo chown pi:pi /opt/samba
chmod 777 /opt/samba
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.org
sudo cp ./smb.conf.replace /etc/samba/smb.conf
sudo service nmbd restart
sudo service smbd restart
もう一つsmb.confを置き換えるファイルを持ってきます。
$ scp pi@192.168.2.101:./smb.conf.replace ./
smb.conf.replaceとデフォールトのsmb.confの違いはこんな感じです。
pi@OrangePI:~$ diff /etc/samba/smb.conf smb.conf.replace
47c47
< ; interfaces = 127.0.0.0/8 eth0
---
> interfaces = 127.0.0.0/8 192.168.2.0/24
54,55c54
< ; bind interfaces only = yes
<
---
> bind interfaces only = yes
254a254,260
> [PIDRIVE]
> comment = pidrive
> read only = no
> locking = no
> path = /opt/samba
> guest ok = yes
> force user = pi
(全てオープンなローカル・ネットワーク内の運用が前提です)
samba_installを実行して・・・
$ sh samba_install.sh
OrangePI PCの/opt/sambaにWindowsからアクセスできるようになりました。
パチパチパチ~
JAVAプログラムの開発は、sambaディレクトリにプロジェクト・フォルダを置いて、Windowns上のNetbeansで行うスタイルが気に入っています。
OrangePI PCとRaspiをscpで接続してみた
(2016.11.30)
ローカル・ネットワーク内にあるコンピュータとファイルの送受が出来るようになると、大変便利です。OrangePI PCにSSHでログインできるのでscpコマンドでファイルの送受が出来る筈だと考えました。
pi@Raspi-1:/opt/sambaへファイル送信を試みたのですが・・・
pi@OrangePI:~$ scp xfce-install.log pi@192.168.2.105:/opt/samba
ssh: connect to host 192.168.2.105 port 22: No route to host
lost connection
あれ、No route to host?
この結果は何なんでしょうか?
試しに逆向き(Raspi側から)の接続を試してみると・・・
pi@Raspi-1 ~ $ scp ./smb.conf pi@192.168.2.117:/opt/samba
The authenticity of host '192.168.2.117 (192.168.2.117)' can't be established.
ECDSA key fingerprint is ~
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.117' (ECDSA) to the list of known hosts.
pi@192.168.2.117's password:
smb.conf 100% 12KB 12.0KB/s 00:00
成功しました。
pi@OrangePIのhomeディレクトリへの送信も・・・
pi@Raspi-1 ~ $ scp ./smb.conf pi@192.168.2.117:./
pi@192.168.2.117's password:
smb.conf 100% 12KB 12.0KB/s 00:00
問題ありません。
う~む、何故OrangePIからscp出来ないんでしょうか?
pi@192.168.2.105のご機嫌が悪かった?
-----------------------
理由は分かっていませんが、Raspiはネットワーク接続を一次的に切断していることがあるようです。公開しているsambaディレクトリが見えないとかxrdpで接続できないとか・・・
そんなとき、一度pingで接続確認してから再接続すると上手く行きます。
-----------------------
で、気を取り直してpi@Raspi-1:/opt/sambaからファイルを受信してみると・・・
pi@OrangePI:~$ scp pi@192.168.2.105:/opt/samba/smb* ./
The authenticity of host '192.168.2.105 (192.168.2.105)' can't be established.
ECDSA key fingerprint is ~
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.105' (ECDSA) to the list of known hosts.
pi@192.168.2.105's password:
smb.conf 100% 12KB 12.0KB/s 00:00
pi@OrangePI:~$ ls
Desktop Downloads WiringOP smb.conf xfce-install.log
出来ました。
pi@Raspi-1:/opt/sambaへのファイル送信は・・・
pi@OrangePI:~$ scp xfce-install.log pi@192.168.2.105:/opt/samba/
pi@192.168.2.105's password:
xfce-install.log 100% 145KB 145.5KB/s 00:00
pi@OrangePI:~$
問題ありません。
最初の不具合は無かったことにします。¥(^_^)
OrangePI PCの初期設定からリモート・デスクトップ接続してLチカまで
(2016.11.28)
前から気になっていたOrangePI(Raspberry pi互換機)を手に入れました。送料込みで凡そ¥2000(これ↓)です。
https://www.aliexpress.com/item/Best-Seller-Orange-Pi-PC-H3-Support-the-Lubuntu-linux-and-android-mini-PC-Beyond-Raspberry/32448079125.html?spm=2114.13010608.0.0.IhJi3h
カーネル(OrangePI_Jessie_Xfce.img)は以下のWEBページを参考にして、インストールしました。
http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=342
http://technical.live-on.net/orange/Linux03.html
RaspiはRaspbianのインストールでそこそこ動きましたが、OrangePIの場合はそうは行きませんでした。元々OrangePIの情報が少ない上に、カーネル・イメージごとに手順が異なるので、そのまま参考にできるWEBページはなかなか見つかりません。
ささやかながら、現時点のOrangePI_Jessie_Xfce.imgを用いたセットアップ手順を以下に記しましたので、ご参考にして頂ければ幸いです。
<セットアップの目標>
Windowsからリモート・デスクトップ接続し、日本語キーボードを利用して、JAVA、C、WiringPIのプログラム開発環境を整え、Lチカプログラムを動かしてみる。
------------------------------
手順1
scriptbin_kernel.tar.gzを解凍したフォルダからuImage,script.binをコピーする(script.binは適当なものを選ぶ)。
uImage_OPI-2 ==> uImage
script.bin.OPI-PC_1080p60_hdmi ==> scpit.bin
手順2
5V電源と有線のイーサネット・ケーブルを接続し、カーネルを起動する。
カーネルが起動すると赤いLEDが点灯します。緑と黄色のLEDしか点灯しない場合はカーネル起動に失敗しているのでSDカードの書き込み&差し込みetc.を見直します。
手順3
赤いLEDの点灯後、暫く(20秒以上)して緑と黄色のLEDが瞬くまで待つ。
(ネットワークにDHCPサーバがあることが前提)
DHCPサーバから割り振られたIPアドレスを使って、SSHでログインする。
ログイン
User:orangepi
Passwd:orangepi
ログイン出来たら第一ステージ クリアです!
パチパチパチ~
-------------------------
手順4
piユーザを設けて、作業環境を整える。
(Raspi用の作業環境に合わせて、OrangePIでもpiユーザを用意する)
$ sudo fs_resize
$ sudo sh -c 'echo 127.0.1.1 OrangePI >> /etc/hosts'
$ sudo useradd -m -k /home/orangepi -p `perl -e "print(crypt('raspberry', 'a0'));"` pi
$ sudo visudo
==>pi ALL=(ALL:ALL) NOPASSWD:ALL
ーーーーーーーーーーーーーーーーー
(2016.12.13) 構文の誤り訂正
ーーーーーーーーーーーーーーーーー
$ sudo reboot
手順5
以後、piユーザでログインして作業を進める。
ログイン
User:pi
Passwd:raspberry
$ sudo apt-get update
$ sudo apt-get upgrade
(1時間以上掛かる)
手順6
xrdpをインストールする
$ sudo apt-get install -y xrdp
$ sudo apt-get install -y vnc4server
以後、windowsからリモート・デスクトップ接続できる。
手順7
プログラム開発環境をインストールする
$ sudo apt-get install -y make gcc gcc-arm*
$ sudo apt-get install -y libncurses5-dev
$ sudo apt-get install -y openjdk-8-jdk
$ sudo apt-get install -y git
$ sudo apt-get autoremove
$ git clone https://github.com/zhaolei/WiringOP.git -b h3
$ cd WiringOP/
$ chmod +x ./build
$ sudo ./build
$ sudo make really-all
$ sudo ./blink
GPIO 17に接続したLEDが点滅したら第二ステージ クリアです!
パチパチパチ~
-------------------------
手順8
日本語環境を整える。
$ sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime
$ sudo sh -c 'echo ja_JP.UTF-8 UTF-8 >> /etc/locale.gen'
$ sudo locale-gen
$ sudo nano /etc/default/locale
==>LANG="ja_JP.UTF-8"
==>LC_ALL=
手順9
キーボードレイアウトを日本語レイアウトにする
$ sudo nano /etc/default/keyboard
==>XKBMODEL="jp106"
==>XKBLAYOUT="jp"
手順10
Xwindow用に日本語フォントをインストールする
$ sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname
$ cd /etc/xrdp/
$ sudo wget http://w.vmeta.jp/temp/km-0411.ini
$ sudo ln -s km-0411.ini km-e0010411.ini
$ sudo ln -s km-0411.ini km-e0200411.ini
$ sudo ln -s km-0411.ini km-e0210411.ini
$ sudo reboot
これで現時点の最終ステージ クリアです!
おめでとうございます、パチパチパチ~