denshikobo’s blog

PICプログラミングやPCの操作で感じた日々の由無し事を綴ります

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ボタンをクリックして・・・

f:id:denshikobo:20170807104259p:plain

サクッと開発環境が構築されました。(パチパチパチ~)

あとはゴリゴリ、ゴリゴリ、コードを書き連ねて行きます。

 

これまで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

 

f:id:denshikobo:20161201121657p:plain

 

OrangePI PCの/opt/sambaWindowsからアクセスできるようになりました。

パチパチパチ~

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

これで現時点の最終ステージ クリアです!

おめでとうございます、パチパチパチ~