コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2023年7月30日 >>> 2023年7月21日
link もっと後

2023年7月30日

PHP 8への道のり、PukiWiki編

目次: 自宅サーバー

以前(2023年7月28日2023年7月13日の日記参照)この日記システムをPHPの最新バージョンPHP 8に対応させました。日記システムは恐らく移行できたと思います。

このサイトはもう一つ主要なシステムとして、PukiWikiを設置していますが、バージョンアップをサボっていてPHP 8に未対応のバージョンの1.5.0か何かのままだったため、エラーになって真っ白ページになっていました。色々イカンので最新版の1.5.4にアップデートしました。

OSSの維持は大変そう

PukiWikiといえば2006年頃に1.4.x系のリリースが止まりました。私はいちユーザーでプロジェクトの内情は知らないですが、開発者の方々(※)が会話しているWikiを確認すると結構荒れてました。2010年頃には、メンテナに対して退けなんて意見を言っている人までいます(開発談義/10 - PukiWiki-devにログが残っています)。ひぇー、こわ……。

開発者不足で困っているPukiWikiプロジェクトですが、2014年に新たなコミッターさんが参加され、今は2年くらいに一度1.5.x系がリリースされています。

  • 1.5.4: 2022-03-30
  • 1.5.3: 2020-03-30
  • 1.5.2: 2019-03-01
  • 1.5.1: 2016-03-07
  • 1.5.0: 2014-07-19
  • 1.4.7_notb: 2006-10-21

コミットログを見ると1.5.x系の開発(PHP 5対応やPHP 8対応なども)はその新たなコミッターさんが頑張っていらっしゃるようです。10年続けているのは凄いですね。

(※)OSDNはプロジェクトメンバー = コミッターでしたっけ?PukiWikiのプロジェクトメンバーは メンバーリスト - PukiWiki - OSDN で確認できます。

編集者:すずき(2024/01/13 14:30)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2023年7月28日

PHP 8への道のり、デバッグ編

目次: 自宅サーバー

以前(2023年7月13日の日記参照)この日記システムをPHPの最新バージョンPHP 8に対応させました。このとき実はコメントがついた日記の一部がエラーになって真っ白ページしか出なくなっていました。私も気づいていなかったくらいなので、誰も気づかなかったはず。たぶん。

エラーメッセージから原因がよくわからず、真面目にデバッグしてみたところ、タグを変換するための設定を思いっきり間違っていました。存在しないキーでハッシュを参照しまくっておりエラー多発です。これは動かないですね。

PHP 8の動きには納得ですけど、PHP 5はこれで動いていたことが逆に不思議です。PHP 5はおおらかなプログラミング言語ですね……。

編集者:すずき(2024/01/13 14:29)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2023年7月24日

OpenOCDで独自のCSRを追加してアクセスする

目次: OpenOCD

OpenOCDにRISC-Vの独自(もしくは標準に準拠しているものの新しすぎるなど)のCSR(Control and Status Register)を定義してアクセスする方法をメモしておきます。

前回はexpose_csrsを使って独自のレジスタを定義しました。この機能はOpenOCDの改造が不要で手軽な反面、2つの問題があります。1つ目の問題はSMPモードだと使えないことで、SMPモードと併用すると下記のように怒られCSRにアクセスできません。

SMPモードとexpose_csrsを併用したときの警告
Warn : Register csrNNN does not exist in riscv.cpu.0, which is part of an SMP group where this register does exist.

2つ目の問題点は名前がわかりづらいことです。csrNNNのようなほぼ番号同然の名前を暗記するのは正直言って辛いですよね。

独自のCSRを定義

CSR名を新たに追加するにはOpenOCDにパッチを当てて、再ビルドする必要があります。OpenOCDのビルド方法は以前書きました(2023年6月28日の日記参照)のでそちらに任せるとして、今回はパッチについて紹介しましょう。

前回同様、題材はRNMI CSRを使います。RISC-V Privileged Architectures V20211203(RISC-V Instruction Set Manual の2023-05-23のリリースページからダウンロードできます)を見ると、RNMIでは4つのCSRが定義されています。


Resumable NMI CSR

書き起こしておくと、

  • 0x740: mnscratch
  • 0x741: mnepc
  • 0x742: mncause
  • 0x744: mnstatus

となります。OpenOCDを変更すべき箇所はsrc/target/riscv/encoding.hというヘッダファイルだけです。

OpenOCDにRNMI CSRを追加するパッチ

diff --git a/src/target/riscv/encoding.h b/src/target/riscv/encoding.h
index c2da4e676..6c3f9cc12 100644
--- a/src/target/riscv/encoding.h
+++ b/src/target/riscv/encoding.h
@@ -2992,6 +2992,10 @@
 #define CSR_PMPADDR61 0x3ed
 #define CSR_PMPADDR62 0x3ee
 #define CSR_PMPADDR63 0x3ef
+#define CSR_MNSCRATCH 0x740
+#define CSR_MNEPC 0x741
+#define CSR_MNCAUSE 0x742
+#define CSR_MNSTATUS 0x744
 #define CSR_MSECCFG 0x747
 #define CSR_TSELECT 0x7a0
 #define CSR_TDATA1 0x7a1
@@ -4714,6 +4718,10 @@ DECLARE_CSR(pmpaddr60, CSR_PMPADDR60)
 DECLARE_CSR(pmpaddr61, CSR_PMPADDR61)
 DECLARE_CSR(pmpaddr62, CSR_PMPADDR62)
 DECLARE_CSR(pmpaddr63, CSR_PMPADDR63)
+DECLARE_CSR(mnscratch, CSR_MNSCRATCH)
+DECLARE_CSR(mnepc, CSR_MNEPC)
+DECLARE_CSR(mncause, CSR_MNCAUSE)
+DECLARE_CSR(mnstatus, CSR_MNSTATUS)
 DECLARE_CSR(mseccfg, CSR_MSECCFG)
 DECLARE_CSR(tselect, CSR_TSELECT)
 DECLARE_CSR(tdata1, CSR_TDATA1)

CSR番号とDECLARE_CSRを追加するだけで良いみたいです。さすがOpenOCD便利な作りですね。

NS31を使って動作確認

前回同様、RNMIを実装しているCPUの例としてNSITEXE NS31を用いてRNMI CSRを読み出してみましょう。

新たに追加したCSR名を指定してNS31のRNMI CSRを読み出す
(gdb) info reg mnscratch mnepc mncause mnstatus

mnscratch      0x0      0
mnepc          0x0      0
mncause        0x80000000       -2147483648
mnstatus       0x8      8

無事読み出すことができました。やはり名前が付いているとわかりやすいですね。

編集者:すずき(2023/09/24 09:19)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2023年7月30日 >>> 2023年7月21日
link もっと後

管理用メニュー

link 記事を新規作成

<2023>
<<<07>>>
------1
2345678
9101112131415
16171819202122
23242526272829
3031-----

最近のコメント5件

  • link 24年4月22日
    hdkさん (04/24 08:36)
    「うちのHHFZ4310は15年突破しまし...」
  • link 24年4月22日
    すずきさん (04/24 00:37)
    「ちゃんと数えてないですけど蛍光管が10年...」
  • link 24年4月22日
    hdkさん (04/23 20:52)
    「おお... うちのHHFZ4310より後...」
  • link 20年6月19日
    すずきさん (04/06 22:54)
    「ディレクトリを予め作成しておけば良いです...」
  • link 20年6月19日
    斎藤さん (04/06 16:25)
    「「Preferencesというメニューか...」

最近の記事3件

  • link 24年4月25日
    すずき (04/26 16:49)
    「[AVIFの変換] AVIFが読めないアプリケーションがたまにあるので、AVIF(AV1 Image File Format)...」
  • link 24年2月7日
    すずき (04/24 02:52)
    「[複数の音声ファイルのラウドネスを統一したい] PCやデジタル音楽プレーヤーで音楽を聞いていると、曲によって音量の大小が激しく...」
  • link 24年4月22日
    すずき (04/23 20:13)
    「[仕事部屋の照明が壊れた] いきなり仕事部屋のシーリングライトが消えました。蛍光管の寿命にしては去年(2022年10月19日の...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 04/26 16:49