May 27, 2017

Lazarus 1.8RC1からIndustrialパッケージが無くなってる

先日、Lazarus1.8RC1がリリースされました。

とりあえずインストールしてみたところ、パッケージの再構築でIndustrialパッケージが
なくなっていました。

「Move Industrial package from Lazarus sources to CCR.」とのことです。

見た目の良さならBGRA関連のコントロールを使用したほうが良いようです。

以前のIndustrial関連コンポーネントを使用してるフォームを開きたい場合は、
Lazarus Code and Component Repositoryから入手できます。

https://sourceforge.net/projects/lazarus-ccr/?source=directory 

SVNからスナップショットをダウンロードしてパッケージをインストールしてください。

https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/

componentsのindustrialstuffをインストールします。

May 09, 2017

Linuxでの、Ultibo用Lazarusのインストール方法

linuxのUltibo用Lazarusのインストール方法は、

https://ultibo.org/forum/viewtopic.php?f=13&t=573

を参考にしてください。

April 21, 2017

Ultibo core 1.3.245

Ultibo coreが1.3.245になりました。

https://ultibo.org/forum/viewtopic.php?f=4&t=559

色々と改善がされているようです。 温度に関しても改良がされてようです。

全開、紹介したUbuntu用にまとめられてるものは、Ultibo coreのバージョンが
古いようです。 どうやら、ソースからインストールしたほうが良いようです。

ソースから、インストールする場合FPCは3.0.0からスタートする必要があります。
また、インストール時の細かい手順が、説明が抜けてたりするので大変かもしれません。


April 04, 2017

Ultibo: Raspberry Piでベアメタル開発(3)

Ultiboのインストール

UlitboはFPC/Lazarusをベースにしているため、Windows/Linuxのクロス開発環境で開発します。

https://ultibo.org/download/
UltiboのダウンロードページにはWindows 用のUltibo coreが用意されていますので、それをダウンロードしてインストールします。

Linux、Macについての、開発環境の設定方法も以下のページにありますが
Macについては、まだ詳細情報はこれからのようです。

Debian

Raspbian

Mac

ところが、Debianのページを参考にUbuntuでセッティングしても上手くいかないことが多いようです。

以下のページを参考にインストールすると手軽にインストールができます。
https://ultibo.org/forum/viewtopic.php?f=10&t=365&sid=dd98daa0ae57ffa05abc23cfbb405f5d

ついでに、

Raspberry Pi Firmware もダウンロードしておきましょう。

Ultibo: Raspberry Piでベアメタル開発(2)

ベアメタルの最大のメリットとも言えるのが、起動時間が短いことです。
組込みLinuxですとアプリ起動までには早くても15秒程度かかります。
それが、ベアメタルでは5秒程度で立ち上がります。

今回は、開発環境の設定の前にそれを実感してもらいたいと思います。

まず、demoイメージをダウンロードして動かしてみましょう。

https://ultibo.org/download/

こちらからUltibo-demoをダウンロードします。

Youtubeで見ることもできます。 https://youtu.be/GF9Xbf3mbf4

April 02, 2017

Ultibo: Raspberry Piでベアメタル開発(1)

bear metal(bear machine)とはOS無しのコンピュータのことです。 似た用語としてベアメタルサーバがありますが、それはクラウドサーバなどで使われるもので此処で言うベアメタルとは別のものです。

組込み開発ではOS無しのコンピュータは別に珍しいものではなく、敢えてベアメタルなどと呼んでいませんでした。逆にLinuxを使用するほうが少ないため、組込みLinuxと呼んでいます。

それに対してRaspberry Piや、BeagleBone Blackは、標準がLinux OSであるため、OS無しで動かすことを、ベアメタルと言うことが多いようです。

BeagleBoneにはStarter Wareというベアメタル開発用のSDKがありますが、Raspberry Piには標準のSDKは無いようです。 その代わり、ベアメタル用のフォーラムは賑わっているようです。

Bare metal

C言語でLチカする程度から…サウンドプレーヤのような実用的なレベルのシステムまで、色々な話題が上がっています。 此処では一年前に公開されたUltiboについて、何回かにわたって説明していきたいと思います。

Ultiboはオーストラリア発の、ベアメタル用のコアライブラリ(Ultibo core)を使用した開発環境で、開発言語はFPC、IDEはLazarusを使用しています。 最近では、C言語のライブラリを使用することもできるようになったため、SQLiteを使用することもできるようです。

Ultiboの特徴は、ベアメタルでLチカしたりGPIOを制御してコンピュータの働きを学習するだけでなく、本格的なベアメタルのアプリケーションシステムを構築することもできることです。 言い換えれば、組込みLinuxで稼働している、小規模なアプリケーションシステムをベアメタルで稼働できるのです。 Ultibo coreライブラリでは、各種デバイス、ファイルアクセス、スレッド、割り込み、ネットワークをサポートしており、多くのFPCのライブラリを使用することができます。 Linux/Windowのアプリケーション開発経験でベアメタルの開発ができるということです。


Ultiboが発表されて一年足らずでいくつかのベアメタルシステムが公開されています。 今後Ultiboで開発されたシステムが増えていくものと思われます。 以下に、Ultibo Coreを使用した例を上げておきます。 

● Z80 CP/Mエミュレータ

EMUZ80 RPI - Z80 / CP/M - Emulator on Rapberry PI/PI2/PI3 (CP/M on RaspberryPI)

● サウンドプレーヤ(.sid, .dmp, .wav, .mp3, .mp2 ans .s48)

The SID player in Ultibo environment

注意:何故か、SIDプレーヤが動作しませんでした、それにCPUは結構熱い。調査中です。

November 20, 2016

LazarusでFirebirdのSEQUENCEを使うには

SQLQueryにはSequenceというプロパティがあります。

FieldName:  フィールド名
SequenceName:  シーケンス名
IncrementBy:  増減値、デフォルトは1
ApplyEvent: イベント適用タイミング(saeOnNewRecord)

以上を、セットするだけです。
ただ、日本語のフィールド名、シーケンス名を使うときは注意が必要です。
どちらか一方は""付きの指定で無いとエラーになった気がします。

November 17, 2016

Lazarus 1.6.2

Lazarus 1.6.2がリリースされました。

FPCのバージョンはそのままです。

August 25, 2016

Lazarus ARM リモートデバッグ (Remote Debug) 2016/8/28修正

プログラムを止められない環境下のデバッグでなければ、デバッガを使うほうがずっと楽です。

つい先日までは、Rasberry Pi3で実行ボタンをクリックしてビルド+実行しようとすると実行時にデバッガエラーで止まってしまいまししたが、今はそのまま実行できるようです。

UbuntuのソフトウェアセンターからインストールしたLazrus Ver1.6は未確認なので、相変わらず実行出来ないかもしれません。

さて、今回はリモートデバッグについてです。
Rasberry Pi3で、セルフでLazrusを動かすことも出来ますが、規模が大きなプログラムになると、やはり速度が気になってきます。 

Lazarusのクロス開発環境の設定も面倒ですが、されらに大変なのがクロスデバッガの設定です。情報を検索しても中途半端だったり、新旧の情報が入り混じってたりで手順がわからず途方にくれてる人も多いようです。

此処で簡単に手順を紹介します。(XG-BBEXT系の説明です、RaspberryPi3で確認したらまた情報をアップします)

① Buildrootにてopensshパッケージを選択しビルドします。
  (あるいはopensshパッケージをインストールします。)

  ボードを起動したら、rootのパスワード設定をします。
  リモートから「ssh root@IPアドレス」でログインできることを確認します。

② リモートマシンにてRSA認証設定をします。

  ファイル[/etc/sshd_config]の以下の2行のコメント「#」を外します
  ---------------------------------------------------------
  RSAAuthentication yes
  PubkeyAuthentication yes
  ---------------------------------------------------------
  修正が終わったら、以下のコマンドでsshdを再起動します(電源入れ直しでもOK)

  # /etc/init.d/S50sshd restart

③ ローカルマシンにて公開・非公開キーを生成します。

  ローカルマシンに以下の2つのファイルを生成します。
  ~/.ssh/id_rsa
  ~/.ssh/id_rsa.pub
  これらのファイルがすでに存在するときは、この手順は飛ばして下さい。

  $ ssh-keygen -t rsa
  (デフォルトのまま、パスフレーズは空白のままにして下さい。 )

④ リモートマシンにファイル「~/.ssh/authorized_keys2」を作成する。

  $ ssh user@remotecomp
  $ mikdir ~/.ssh
  $ touch ~/.ssh/authorized_keys2
  $ chmod 600 ~/.ssh/authorized_keys2

⑤ ローカルマシンの公開キーをリモートマシンにコピーする。

  $ ssh-copy-id -i ~/.ssh/id_rsa.pub root@IPアドレス

⑥ テスト
  パスワード無しでログインできるかどうか、テストします。

  $ ssh root@IPアドレス

⑦ IDEのデバッガ設定

  Lazrusのメニュー[ツール]-[オプション]にてIDEオプションダイアログを表示し、
  [デバッガ]を選択します。

  デバッガの種類はgdbserverを選択します。
  ローカル側のデバッガはBuildrootにて作成されたgdbデバッガを指定します。

  例えば、
/home/guest/xgbbext-lk/buildroot-2013.11-xgbbext-1.1/output/host/usr/bin/arm-linux-gnueabihf-gdb
  (シンボリックリンクの場合は、元のgdbのフルパスが表示されます)

⑧ リモート側にビルドされたアプリケーションを配布(scp,ftp,nfsなどで)

⑨ アプリケーションのデバッグ

  リモート側にてアプリを起動(待機)

  # gdbserver host:2345  ./アプリケーション

⑩ ブレークポイントの設定(必要なら)

⑪ 実行

注意:

④項を追加しました(2016/08/28)

August 24, 2016

LazLogger

デバッガでのデバッグは便利なのですが、 通信や機械を制御してる場合などでは通常ブレークポイントで停止することは出来ません。 このような場合にログ機能を使用することができます。

LazLoggerを使用するには

lazloggerunitに追加するだけでLazLoggerを使用することが出来ます。。

メニュー「ソース」-unituses節に追加」にてuses節にunitを追加ダイアログを表示させます。 そしてlazloggerを選択して、OKボタンをクリックします。

(すべてのユニットを表示をチェックしてない場合、ユーザのアプリ関連のunitしか表示されないので、クチェックしておきます)

 

 

 

 

 

 

使用方法

基本的には、write, writelnに近いですが、機能が追加されています。

① DebugLn: WriteLnと同じです(改行)

② DebugLnEnter/DebugLnExit: debuglnと同じですが、

  字下げの増加、減少をします

③ DbgOut: writeと同じ動作です

 

引数の書き方には以下の方法があります

① 単一文字列または(最大15個までの)文字列の並び

  DebugLn('Foo');

  DbgOut('a','b');

② 定数の配列

  DebugLn(['Foo=', 1, ' Bar=', anInteger]);

③ Format()関数と同じ書式(文字列+定数の配列)

  DbgOut('a %d',[1]);

 

dbgs関数では標準的な型を文字列に変換することができます。

/usr/share/lazarus/1.6/components/lazutils/LazLoggerImpl.inc」にて定義されています。

出力先

通常はstdoutに出力されます。

stdoutがクローズ状態の時は出力されません。(アプリケーションが {$AppType Gui}のとき、またはWindows において -WGオプションにてコンパイルされた時)

 

ファイルにログを書き出すこともできます。 LazLoggerは初期化の時に以下のことをします。

コマンドライン引数「 --debug-log=<file> (Lazarusから実行するときは: 「実行」-「実行パラメータ」-「コマンドライン引数」)をチェックします。 このパラメータが存在すれば、以降のデバッグ出力は<file>に書きだされます。

--debug-log=<file>」が存在しない時は、OSの環境変数に xxx_debuglogが存在するかどうかチェックします(ここでxxxは拡張子なしのプログラムファイル名)。該当する環境変数が存在すれば、デバッグ出力はそのファイルに書きだされます。

 

マルチスレッド

debuglnはスレッドセーフではありません。

対処としては

① Synchronizeをスレッド内で使用し、メインスレッドにてdebuglnが実行されるようにします。

② DbgOutThreadLogを使用することにより、 ファイル「'Log'+IntToStr(GetThreadID)」に

  ログを書き出すことができます。

 

 

«Raspberry Pi3 Lazarusのインストール

July 2017
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

大規模災害に備える

他のアカウント

無料ブログはココログ

Recent Trackbacks