BungBungame KALOS のカスタムROM化は可能か?

ユーザさんより台湾BungBungame製 KALOS のカスタムROM化が可能か問合せがあったため調べてみました。その覚え書きです。

年式2013、当時日本でもいろいろ紹介されていたようです。現在、情報も少なく、スペックはこちらのようです

Android4.22止まり、有機EL、2560×1600と解像度は当時としては高く、Wi-fiモデルのみ。

https://androidfilehost.com/ にも直接はヒットせず。しかし「BaikalOS」といキーワードが出てます。これはAndroidの派生の一つのようです。たまたま単語部分一致でヒットした模様です。
2013年製となると、どのみち最新に近いAndroid相当のROMは作られていないと思われます。

SwiftではTextEditorの縦サイズが端末毎に変わってしまう

Shitf-UI にてライセンス許諾文を、TextEditor に表示した際の覚え書きです。Xcode 14.1 です。

TextEditor は、オートサイズが無いようです。フォントサイズを指定して、ライセンス許諾文が収まるようTextEditor 横縦サイズを指定しておきました。理論上どの端末でも同じになるハズですが、端末によって、ライセンス許諾文が途中で切れてしまいます。 これは iOSシュミレータと実機での間でも発生します。付随条件としては、TextEditor だけはスクロールできないので ScrollView をかませました。この時の端末は iPad 6th です。

@State private var licenseText : String = "Error"
 :
中略
 :
var body: some View {
 :
中略
 :
    ScollView( [.vertical], showsIndicators:true) {
	     TextEditor(text: $licenseText/* $必須 */ )
	     .frame(	width: myWidth * 0.9, height:8000)
	     .disabled(true)	// 入力禁止有効 
    }
    .border(Color.black, width: 1)
 :
中略
 :
}
.onAppear {
   :
  ライセンス文読込み
   :
	licenseText = tmptxt.string
   :
 後略

おそらく端末毎に dpi が異なるためだとおもうのですが、dpiを取得して演算するまで凝りたくありません。表示領域が多い分には実害はないので、弊方では height値 を一番高性能そうなiPad Pro 12inch の iOSシュミレータで合わせこんでおきました。

    ScollView( [.vertical], showsIndicators:true) {
	     TextEditor(text: $licenseText/* $必須 */ )
	     .frame(	width: myWidth * 0.9, height:9000)
	     .disabled(true)	// 入力禁止有効 
    }

8000 -> 9000 にUPで収まったということはザックリ1割のマージンを持たせておいた方が無難という感じでしょうか?

Swiftでフォントに影をつけるには

Swift-UIで、画面タイトルなどちょっとフォントを装飾したい。しかしフォント装飾の機能は何も見当たらない。Appleだからこジャレた装飾がたくさんあるのかと想像していましたが... ちゃんとタイトル画像を作ることがAppleポリシーなのでしょうか? そこまでは労力を掛けたくない。

そこで以下のようにすると、ZStack でノーマルフォントとボールドフォントを重ねると、フォントに影がついて少し見た目がよくなりました。

	/* アプリVersion、等長fontでBoldを下にひいて影付け */
	ZStack {
		// 下側(影)
		Label(	"Version 1.5.5",
			systemImage: "")
		.font(.system(size: 36, weight: .bold, design: .monospaced))
					
		Label(		"Version 1.5.5",
				systemImage: "")
				.font(.system(size: 36, weight: .regular, design: .monospaced))
        .foregroundColor(Color.yellow)
	}

表示例は、

ちょっとイマイチかもしれませんが、プレーンな状態と比べるとかなりマシです。

Swiftでは画像縮小時、縦横比が保持されない

Swift-UIで画像を縮小表示する場合、アスペクト比を保ったまま表示されませんでした。htmlでさえ幅か高さだけ指定すれば、アスペクト比を保ったまま表示してくれるのに… その対策か他記事では見当たらなかったので報告します。 Xcode 14.1 です。急いでいたので幅広く調べてはいません。

対策は、オリジナル画像の縦横サイズを確認して、コード上で縦サイズと横サイズをアスペクト比を保つように計算します。

let bounds = UIScreen.main.bounds
let myWidth	 = bounds.width		// 自画面幅

Image("picture")
.resizable()	// Memo: コレ付けないと原寸表示される。
// Orignalサイズ 1664 x 1912 から画面サイズで計算する。
.frame(width: 1664 * myWidth/1912  * 0.35 ,
 	     height: 1912 * myWidth/1912 * 0.35 )
.padding(20)

複数の端末種に対応させるために、スクリーン横幅基準にズーム率を乗じます。

う~ん、本当にこれでいいのか? 面倒すぎる。

RH850のコード自動生成を試す

前記事ではRH850のPCシュミレータを試してみました。RL78では、CS+e2studio 共にペリフェラル部の自動コード生成ができます。本製品用にはギモンですが、ライトな製品、デモ、プロト には役立ちます。RH850では使えそうでしょうか?


実施条件は、IDE:e2studio 2024-07、基板は北斗電子さんのHSBRH850F1KH176を使います。PIN数は176。基板は仲間が手配中で未だ手元にはありません。取説は見ず勘所での操作なので勘違いがあるやもしれません。

自動生成機能(スマートコンフィグレータ)を起動するには、プロジェクトツリーかに、.scfg を開きます。分かりにくいですがタブ切替が下端にあります。


[クロック]タブを選ぶと思わずうげっとする複雑の図が現れます。クロックソースから各機能クロックと分周が接続図で現れ、図中の分岐ポイントを切替えると各機能クロックの周波数が表示される仕組みです。RH850F1H は水晶は2つ接続できるのでややこしい図になっていますが、ハードマニュアルと照らし合わせれば理解は可能です。

今回は、CSI(クロック同期シリアル)を最速にしたいので上記の設定となりました。


[コンポーネント]タブでは、マイコン機能詳細を設定します。アイコンを選びぶとコンポーネント一覧から必要な機能を選び追加し、それぞれの機能の設定を行います。コンポーネント名はプリセットされますが任意に変更できます。これは先にすましておいたほうがいいようです。各詳細は後術にて。しかし肝心のCANの自動生成は今のところ無いようです。


[端子]タブでは、マイコンポート機能の有効無効を設定します。I/Oポートの設定、各機能の設定はここでは行いません。以下CSI の一例です。


[割込]タブでは、ハンドラ名、優先度を設定します。ベクターテーブルがそのまま掲載されている感じです。割込みの有効無効は、[コンポーネント]タブの機能詳細設定側では設定します。


RL78ではポート一覧が常時表示されていましたが、RH850では[コンポーネント]タブから、アイコンを選び、コンポーネント一覧から[ポート]を選び明示的に追加が必要です。操作は以下の通り、ポート一覧の操作は普通です。この設定ができていないと、[端子]タブで「ポートの初期化ができていません」とメッセージが表示されます。


標準的なハードウェアタイマーを作りたい場合、[コンポーネント]タブからコンポーネント一覧から[インターバルタイマ]を選び、次の画面からタイマー種とチャンネルを選びます。

タイマー種とチャンネルはハードウェアマニュアルから理解しておく必要があります。後は画面項目に従って入力します。以下、1msecタイマーの一例です。


設定に特筆はないのですが、クロック設定でCSI用は80Mhzに下にもかかわらず、通信速度が最大の 10Mbps ではなく、1Mbps 止まりです。動かしてみてから実際のところを確認してみたいと思います。


設定に特筆はないのですが、ソースアドレス、デスとネーションアドレスには、直接SFRは書けないようです。CS+用のRL78では出来ていたような…


ソースコードの生成ボタンが分かりにくいですが以下の場所あります。


尚、ソースコードを生成すると、ソースコード生成フォルダが一度削除されます。バージョン管理などの管理フォルダ .ファイル が削除さてれしまいます。 project設定を変更しても解消できません。弊方では以下のように対処しました。

① 自動生成フォルダを src 下外に移動します。

② Makefile自動設定をoffにする。

③ 自動生成 folder のサブ folder のMakefile類を以下のように修正します。このついでに絶対パスほ相対パスに変更しておきます。

④ 再度自動生成した場合は、src/smc_gen の結果を、移動先folder にマージします。しかしシンボリックリンクを張ればマージは不要になるかもしれません。ソースが増えたら、Makdefile自動を有効にして一度makefileを再生成して、③の修正をマージします。


以上、RH850の自動コード生成は使えそうでした。しかしCAN部が何もありません。

CANドライバー作成にづづきます。