www.mtkn.jp

Manuscripts for my personal webpage.
git clone https://git.mtkn.jp/www.mtkn.jp
Log | Files | Refs | README

commit 4d31823acce8bc0e4d8097bf1e7433141aaea07a
parent de190f6d870defdd34b4a50b98c77f5f0f6633f5
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Wed, 21 Jun 2023 11:44:36 +0900

remove draft

Diffstat:
Mdata/weblog | 207+++----------------------------------------------------------------------------
Rpub/computer/rp2040_2.html -> pub/draft/rp2040_2.html | 0
Mpub/rss.xml | 234+++++++++++++------------------------------------------------------------------
Mpub/sitemap.xml | 9++++-----
4 files changed, 48 insertions(+), 402 deletions(-)

diff --git a/data/weblog b/data/weblog @@ -1,10 +1,7 @@ -1596380400 /farm/index.html 1596380400 /kitchen/index.html -1616598000 /computer/archlinux_installation.html 1628175600 /journal/posts/20210806.html 1637074800 /farm/journal/2021.html 1638111600 /journal/posts/20211129.html -1639321200 /computer/what-i-use.html 1639407600 /journal/posts/20211214.html 1642086000 /computer/rtx1200-qos.html 1643900400 /kitchen/r4_osechi.html @@ -13,7 +10,6 @@ 1652367600 /journal/posts/20220513.html 1656255600 /computer/setting_up_web_server.html 1658242800 /journal/posts/20200808.html -1660316400 /about.html 1660316400 /journal/posts/20200719.html 1660316400 /journal/posts/20200723.html 1660316400 /journal/posts/20200725.html @@ -31,218 +27,29 @@ 1660316400 /journal/posts/20201202.html 1660316400 /journal/posts/20201209.html 1660316400 /journal/posts/20201210.html -1660316400 /journal/posts/20210106.html 1660316400 /journal/posts/20220729.html -1660316400 /journal/posts/20220730.html 1660316400 /journal/posts/20220813.html 1660575600 /journal/posts/20220814.html -1665241200 /poetry/index.html 1666450800 /journal/posts/20221023.html -1667142000 /journal/index.html 1667142000 /journal/posts/20221031.html -1669129200 /books/978-4-06-288451-8.html -1669129200 /books/index.html -1671548400 /computer/index.html -1671548400 /index.html -1671634800 /computer/xlib_playground1.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground1.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/index.html -1671634800 /computer/xlib_playground2.html -1671634800 /index.html -1671634800 /computer/index.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground1.html -1671634800 /computer/xlib_playground2.html -1671634800 /computer/xlib_playground1.html -1672153200 /journal/posts/20221228.html -1672153200 /journal/posts/20221228.html -1672153200 /journal/posts/20221228.html -1672153200 /journal/posts/20221228.html -1672153200 /index.html -1672153200 /journal/index.html -1672585200 /computer/xlib_playground3.html -1703689200 /index.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/index.html -1672585200 /computer/xlib_playground3.html -1672585200 /index.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground2.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground2.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground4.html -1672585200 /computer/xlib_playground4.html -1672585200 /computer/xlib_playground4.html -1672585200 /computer/xlib_playground4.html -1672585200 /computer/xlib_playground4.html -1672585200 /computer/xlib_playground4.html -1672585200 /computer/index.html -1672585200 /computer/xlib_playground3.html -1672585200 /computer/xlib_playground4.html -1672585200 /index.html -1672585200 /computer/xlib_playground3.html -1672671600 /computer/xlib_playground5.html -1672671600 /computer/index.html -1672671600 /computer/xlib_playground4.html -1672671600 /index.html -1672671600 /computer/index.html 1674054000 /about.html -1674054000 /index.html 1674054000 /farm/index.html -1674054000 /journal/posts/20230119.html -1674054000 /journal/posts/20230119.html -1674054000 /index.html 1674054000 /journal/index.html 1674054000 /journal/posts/20230119.html -1674054000 /journal/index.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/index.html -1674572400 /computer/xlib_playground5.html -1674572400 /computer/xlib_playground6.html -1674572400 /index.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1674572400 /computer/xlib_playground6.html -1677510000 /poetry/index.html -1677510000 /index.html 1679324400 /poetry/index.html -1682348400 /computer/what-i-use.html -1682348400 /computer/xlib_playground1.html -1682348400 /computer/xlib_playground2.html -1682348400 /computer/xlib_playground3.html -1682348400 /computer/xlib_playground4.html -1682348400 /computer/xlib_playground5.html -1682348400 /computer/xlib_playground6.html -1682348400 /computer/what-i-use.html -1682348400 /computer/what-i-use.html -1682348400 /computer/what-i-use.html -1682348400 /computer/what-i-use.html -1682348400 /index.html -1682348400 /computer/index.html -1682348400 /computer/rp2040_1.html -1682348400 /index.html -1682348400 /index.html -1682348400 /computer/rp2040_1.html -1682348400 /computer/rp2040_1.html -1682348400 /computer/rp2040_1.html -1682348400 /computer/rp2040_1.html -1682348400 /computer/rp2040_1.html -1682348400 /computer/rp2040_1.html -1682348400 /computer/rp2040_1.html -1682348400 /computer/rp2040_1.html -1682348400 /computer/rp2040_1.html -1682348400 /computer/rp2040_1.html -1682348400 /computer/rp2040_1.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /computer/what-i-use.html -1682953200 /index.html 1683558000 /computer/rp2040_1.html -1683558000 /computer/rp2040_1.html -1683644400 /computer/rp2040_2.html -1683644400 /computer/rp2040_2.html -1683644400 /computer/rp2040_2.html -1683644400 /computer/rp2040_2.html -1683644400 /computer/rp2040_2.html -1683644400 /computer/rp2040_2.html -1683644400 /computer/rp2040_2.html -1683644400 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1683730800 /computer/rp2040_2.html -1684076400 /index.html +1684076400 /computer/archlinux_installation.html +1684076400 /computer/index.html 1684076400 /computer/what-i-use.html 1684076400 /computer/xlib_playground1.html 1684076400 /computer/xlib_playground2.html 1684076400 /computer/xlib_playground3.html 1684076400 /computer/xlib_playground4.html 1684076400 /computer/xlib_playground5.html -1684076400 /computer/xlib_playground1.html -1684076400 /computer/xlib_playground2.html -1684076400 /computer/xlib_playground3.html -1684076400 /computer/xlib_playground4.html -1684076400 /computer/xlib_playground5.html 1684076400 /computer/xlib_playground6.html -1684076400 /computer/index.html -1684076400 /journal/posts/20220730.html +1684076400 /index.html 1684076400 /journal/posts/20210106.html -1684076400 /computer/archlinux_installation.html -1684076400 /computer/archlinux_installation.html -1684076400 /computer/archlinux_installation.html +1684076400 /journal/posts/20220730.html +1700665200 /books/978-4-06-288451-8.html +1700665200 /books/index.html +1703689200 /journal/posts/20221228.html diff --git a/pub/computer/rp2040_2.html b/pub/draft/rp2040_2.html diff --git a/pub/rss.xml b/pub/rss.xml @@ -5,10 +5,45 @@ <description>ウェブページの更新履歴</description> <language>ja-jp</language> <link>https://www.mtkn.jp</link> -<lastBuildDate>Mon, 15 May 2023 20:10:26 +0900</lastBuildDate> -<pubDate>Mon, 15 May 2023 20:10:26 +0900</pubDate> +<lastBuildDate>Tue, 16 May 2023 11:39:23 +0900</lastBuildDate> +<pubDate>Tue, 16 May 2023 11:39:23 +0900</pubDate> <docs>https://www.rssboard.org/rss-specification</docs> <item> +<title>Holy Shit!</title> +<link>https://www.mtkn.jp/journal/posts/20221228.html</link> +<guid>https://www.mtkn.jp/journal/posts/20221228.html</guid> +<pubDate>Thu, 28 Dec 2023 00:00:00 +0900</pubDate> +<description><![CDATA[<h1>Holy Shit!</h1> +<p>最近見ているプログラマの配信者がよく言っている。「Holy Shit!」Holyは聖なる、Shitはうんこという意味である。日本のプログラマもうんこという言葉を好むが、海外でも同じようである。 +</p> +<p> +ところでこの言葉の訳語はなにがいいかと考えていると思いがけずぴったりなものを思いついた:</p> +<p> +「すめらうんこ」 +</p> +<p> +そうそれは、すめらみことの落しもの(droppings)。嗚呼不敬。 +</p> +]]></description> +</item> +<item> +<title>不死身の特攻兵</title> +<link>https://www.mtkn.jp/books/978-4-06-288451-8.html</link> +<guid>https://www.mtkn.jp/books/978-4-06-288451-8.html</guid> +<pubDate>Thu, 23 Nov 2023 00:00:00 +0900</pubDate> +<description><![CDATA[<h1>不死身の特攻兵</h1> +<div class="author">鴻上尚史 著</div> +<time>2022-11-23</time> +<p>大東亜戦争において何度も特攻を命じられるも生還した佐々木友次という人の話。ベテランのパイロットだったために陸軍の特攻第一号に選ばれ、死んでこいと言われたが爆弾を落して帰ってきた人である。それも何度も。</p> +<p>第一章は著者が佐々木氏を知ったいきさつ。第二章は佐々木氏の伝記。第三章は著者の佐々木氏へのインタビュー。第四章は著者による戦争や特攻に関する考察。</p> +<p>第一章は導入である。</p> +<p>第二章は物語として面白かった。戦争や特攻といった理不尽なものに対して自分の信念を貫いた佐々木氏の生き方や考え方が痛快である。</p> +<p>第三章のインタビューでは佐々木氏が繰り返し口にした寿命という言葉が印象的だった。人間は寿命がくれば死に、それまでは生きる、というものである。たとえ戦死であろうともそれがその人の寿命であるとの認識であるようだ。この考えにはとても共感できる。</p> +<p>第四章はかなり客観的に書かれているように思う。その上で著者自身の考えを述べているので読みやすかった。しかし読み進めるにつれてだんだんともやもやが溜っていった。当時の日本を支配していた空気があまりにも重苦しい。しかもその空気は、現在の日本にあるものとほとんど同じであると感じた。ここ最近僕が感じているこの国の暗い部分は大東亜戦争のころからなにも変らずに受け継がれているようである。せっかく無様に負けたのに本当の意味での反省を一切していないためか、なにも変っていない。余りにも勿体無く、戦没者にも失礼である。</p> +<p>もっと歴史を勉強し、今の生き方に反映しなければと考えさせてくれる本だった。</p> +]]></description> +</item> +<item> <title>新型コロナウイルスとその対策に関する個人的見解</title> <link>https://www.mtkn.jp/journal/posts/20220730.html</link> <guid>https://www.mtkn.jp/journal/posts/20220730.html</guid> @@ -1577,166 +1612,6 @@ $ ssh-keygen -t rsa ]]></description> </item> <item> -<title>RP2040 SDKなし2 Clock, UART</title> -<link>https://www.mtkn.jp/computer/rp2040_2.html</link> -<guid>https://www.mtkn.jp/computer/rp2040_2.html</guid> -<pubDate>Thu, 11 May 2023 00:00:00 +0900</pubDate> -<description><![CDATA[<h1>RP2040 SDKなし2 Clock, UART</h1> -<time>2023-05-10</time> -<p> -前回: <a href="rp2040_1.html">RP2040 SDKなしでLチカ</a><br> -ソースコード: <a href="https://git.mtkn.jp/rp2040">git</a>/ex2 -</p> - -<h2>動作環境</h2> -<ul> -<li>Arch Linux 6.2.12-arch1-1 - <ul> - <li>arm-none-eabi-binutils 2.40-1</li> - <li>GNU Make 4.4.1</li> - </ul> -</li> -<li>OpenBSD 7.3 - <ul> - <li>arm-none-eabi-binutils 2.31.1</li> - <li>make (バージョン?)</li> - </ul> -※<code>make flash</code>は動かん。<code>dmesg</code>でデバイス確認して手動でマウントする必要がある。 -</li> -</ul> - -<h2>Clock</h2> - -<h3>リング発振回路</h3> -<p>RP2040にはリング発振回路というのが内蔵されている。これは自分の出力を反転させようとするもので、不安定だが高速で消費電力の少ないクロックとして用いられる。RP2040は電源を入れると、このリング発振回路を動作用のクロックとして用いている。この発振回路の周波数は、チップの製造過程での誤差、動作時の電圧、動作温度によって変動するので、正確な周波数が必要な用途には向かない。</p> - -<h3>水晶発振子</h3> -<p>秋月電子通商で購入したRP2040マイコンボードには外部クロックとして、12MHzの水晶発振子が付属する。水晶発振子はリング発振回路より電力を消費するが、より正確である。</p> - -<h3>PLL</h3> -<p>水晶振動子を入力として、周波数を数倍にしたものを出力するもの。電気的な話はよく知らない。データシートの「2.18.2. Calcurating PLL parameters」によると、入力周波数を<code>FREF</code>としたときの出力周波数は<code>(FREF / REFDIV) × FBDIV / (POSTDIV1 × POSTDIV2)</code>となる。これらの変数はそれぞれ設定用のレジスタに値を保存することで変更できる。</p> - -<h2>UART</h2> - -<h2>リング発振回路でUARTは動くんかな?</h2> -<p>UARTの通信には正確なクロックが必要である。その為上では<code>clk_peri</code>として水晶発振子とPLLを用いた。ところがpico-examplesのhello_uartでは<code>main()</code>関数で水晶発振子を設定していない。そこでリング発振回路を用いてみたのだが、どうもうまく通信できない。出力されている正確な周波数も分からないのであきらめることにした。オシロスコープなんていうものは持っていない。</p> - -<h3>pico-sdk</h3> -<p> -ところがどうも調べているとSDKを使った場合、デフォルトではクロック周波数は125MHzになっているらしい。どうやら水晶発振子もPLLも<code>main()</code>が呼ばれる前に設定されているようである。</p> -<p> -pico-examplesのサンプルプログラムはビルドすると自動で逆アセンブリしたファイルを出力してくれる。これを見ると、最初の256バイトは前回説明したboot2のコードで、その後ろにベクターテーブルが続く。ベクターテーブルの最初は初期スタックポインタで、<code>0x20042000</code>になっている。次はエントリーポイントで、<code>0x100001f7</code>である:</p> -<pre><code>10000100 &lt;__VECTOR_TABLE&gt;: -10000100: 20042000 .word 0x20042000 -10000104: 100001f7 .word 0x100001f7 -</code></pre> -<p> -Thumbモードなので実際のエントリーポイントは<code>1</code>引いた、<code>0x100001f6</code>である。この場所ではまず自分のCPUIDを調べて、<code>1</code>であれば待機状態に移行する。RP2040はデュアルコアである。起動直後はCPUIDが<code>0</code>のコアだけで処理をして、CPUIDが<code>1</code>のコアはプログラマが必要に応じて起動することになっている。このためCPUIDが<code>1</code>のコアは起動してすぐに待機状態に入ることがデータシートに書かれている。しかしこの処理はユーザーの書いたプログラムじゃなくて内蔵ROMにある起動用プログラムが担当するみたいに書かれてるんやけど、なんでSDKではユーザープログラムの一部として組み込んでるんかな? -</p> -<pre><code>100001f6 &lt;_reset_handler&gt;: -100001f6: 481d ldr r0, [pc, #116] ; (1000026c &lt;hold_non_core0_in_bootrom+0xe&gt;) -100001f8: 6800 ldr r0, [r0, #0] -100001fa: 2800 cmp r0, #0 -100001fc: d12f bne.n 1000025e &lt;hold_non_core0_in_bootrom&gt; -</code></pre> -<p>上のコードの最初の<code>ldr</code>は、<code>0xd0000000</code>(M0PLUS: CPUIDレジスタ)をロードしている。最後の飛び先<code>0x1000025e</code>はCPUIDが<code>1</code>のCPUを待機させる処理である:</p> -<pre><code>1000025e &lt;hold_non_core0_in_bootrom&gt;: -1000025e: 4809 ldr r0, [pc, #36] ; (10000284 &lt;hold_non_core0_in_bootrom+0x26&gt;) -10000260: f001 fb9c bl 1000199c &lt;rom_func_lookup&gt; -10000264: 4700 bx r0 -10000266: 0000 .short 0x0000 -/* ... */ -10000284: 00005657 .word 0x00005657 -</code></pre> -<p>内蔵フラッシュに書きこまれた関数を呼びだしている。呼びだしに使うコードは<code>0x00005657</code>(<code>'W' | 'V' &lt;&lt; 8</code>)である。データシートを見ると、この関数は<code>_wait_for_vector()</code>という名前で、CPUIDが1のCPUを寝かしつけるのに使われると書いている。この部分のソースコードをpico-sdkで探すと<code>pico-sdk/src/rp2_common/pico_standard_link/crt0.S</code>というのが見付かった:</p> -<pre><code>$ find pico-sdk/src -type f | xargs grep -l _reset_handler -pico-sdk/src/rp2_common/pico_standard_link/crt0.S -</code></pre> -<p>このファイルによると: -</p> -<pre><code> // Only core 0 should run the C runtime startup code; core 1 is normally - // sleeping in the bootrom at this point but check to be sure -</code></pre> -<p>だそうである。やっぱり無駄やん。内蔵フラッシュのプログラムにバグがあってもこのコードのせいで見付かりにくくなってない?知らんけど。</p> - -<p>続いて<code>.data</code>領域と<code>.bss</code>領域のコピー、初期化のようである。多分OSの本かなんかで習ったメモリマップの話:</p> -<pre><code>100001fe: a40d add r4, pc, #52 ; (adr r4, 10000234 &lt;data_cpy_table&gt;) -10000200: cc0e ldmia r4!, {r1, r2, r3} -10000202: 2900 cmp r1, #0 -10000204: d002 beq.n 1000020c &lt;_reset_handler+0x16&gt; -10000206: f000 f812 bl 1000022e &lt;data_cpy&gt; -1000020a: e7f9 b.n 10000200 &lt;_reset_handler+0xa&gt; -1000020c: 4918 ldr r1, [pc, #96] ; (10000270 &lt;hold_non_core0_in_bootrom+0x12&gt;) -1000020e: 4a19 ldr r2, [pc, #100] ; (10000274 &lt;hold_non_core0_in_bootrom+0x16&gt;) -10000210: 2000 movs r0, #0 -10000212: e000 b.n 10000216 &lt;bss_fill_test&gt; - -10000214 &lt;bss_fill_loop&gt;: -10000214: c101 stmia r1!, {r0} - -10000216 &lt;bss_fill_test&gt;: -10000216: 4291 cmp r1, r2 -10000218: d1fc bne.n 10000214 &lt;bss_fill_loop&gt; -</code></pre> - -<p>最後にいろいろ呼びだす:</p> -<pre><code>1000021a &lt;platform_entry&gt;: -1000021a: 4917 ldr r1, [pc, #92] ; (10000278 &lt;hold_non_core0_in_bootrom+0x1a&gt;) -1000021c: 4788 blx r1 -1000021e: 4917 ldr r1, [pc, #92] ; (1000027c &lt;hold_non_core0_in_bootrom+0x1e&gt;) -10000220: 4788 blx r1 -10000222: 4917 ldr r1, [pc, #92] ; (10000280 &lt;hold_non_core0_in_bootrom+0x22&gt;) -10000224: 4788 blx r1 -10000226: be00 bkpt 0x0000 -10000228: e7fd b.n 10000226 &lt;platform_entry+0xc&gt; -/* ... */ -10000278: 10001819 .word 0x10001819 -1000027c: 100002dd .word 0x100002dd -10000280: 10001909 .word 0x10001909 -</code></pre> -<p>一つめの<code>blx</code>は<code>0x10001818</code>(<code>runtime_init</code>)を、二つめは<code>0x100002dc</code>(<code>main</code>)を、最後のは<code>0x10001908</code>(<code>exit</code>)を、それぞれ呼んでいる。この<code>runtime_init</code>はアセンブリでは分かりにくいのでソースコードを探してみると、以下のものが見付かった:</p> -<pre><code>$ find pico-sdk/src -type f | xargs grep -l runtime_init -pico-sdk/src/rp2_common/pico_runtime/runtime.c -pico-sdk/src/rp2_common/pico_standard_link/crt0.S -pico-sdk/src/common/pico_sync/include/pico/mutex.h -</code></pre> -<p>最後の<code>mutex.h</code>は関係なさそう。二つめの<code>crt0.S</code>は呼びだしてるだけ。一つめの<code>runtime.c</code>が多分探しているものである。これを見るとまず各種周辺機器を一度リセットし、リセット状態を解除している。使わんやつも初期化してない?その後<code>clocks_init()</code>を呼んでいる。この関数は<code>pico-sdk/src/rp2_common/hardware_clocks/clocks.c</code>で定義されている。これを見ると、<code>xosc_init()</code>を呼んで水晶発振子を初期化した後、<code>clk_peri</code>を125MHzに設定している:</p> -<pre><code> clock_configure(clk_peri, - 0, - CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLK_SYS, - 125 * MHZ, - 125 * MHZ); -</code></pre> -<p>やっぱり水晶発振子じゃないとあかんのかな。</p> - -<h2>CMake</h2> -<p>上ではビルドしたバイナリを逆アッセンブルして読んだ。わざわざこんなことをしなくてもMakefile読めばなにがどうなって最終生成物に辿りつくのか分かればいいのだが、そうもいかない。このSDKとpico-examplesにはビルドシステムとしてCMakeなるものが使われている。これがどうも複雑でよく分からない。勉強する気にもならん。上で見た<code>crt0.S</code>や<code>runtime.c</code>といったファイルも<code>hello_uart</code>で本当に使われているものなのかもよく分からない。こんな煩雑なものは本当に必要なのかな。無駄に複雑にしてるだけとちゃうんかな。特に僕は勉強用に使ってるので、ソースコードの依存関係をもっと分かりやすくしてくれないと、内部でなにがどうなってるのか理解しにくい。何度か頑張って読もうとしたが、面白くないのでやめた。数百行のファイルをあっちからこっちから<code>include</code>してるし、大文字ばかりの変数だらけで目が痛い。こんなものを扱えるというのはえらいええ頭してはるんやね<sup>†</sup>。</p> - - -<h2>参考</h2> -<ul> -<li> -<a href="https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf">RP2040 Datasheet.Raspberry Pi Foundation</a> -</li> -<li> -<a href="https://github.com/raspberrypi/pico-sdk">pico-sdk.github</a> -</li> -<li> -<a href="https://developer.arm.com/documentation/ddi0419/c/">ARMv6-M Architecture Reference Manual</a> -</li> -<li> -<a href="https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%BB%E3%82%AA%E3%82%B7%E3%83%AC%E3%83%BC%E3%82%BF">リング・オシレータ.Wikipedia</a> -</li> -<li> -<a href="https://www5.epsondevice.com/ja/information/technical_info/osc.html">水晶発振器とは? 原理と仕組み、水晶振動子との違い、選び方のポイントを解説.エプソン水晶デバイス</a> -</li> -</ul> - -<p><sup>†</sup>僕は和歌山の人間である。</p> - -]]></description> -</item> -<item> <title>RP2040 SDKなしでLチカ</title> <link>https://www.mtkn.jp/computer/rp2040_1.html</link> <guid>https://www.mtkn.jp/computer/rp2040_1.html</guid> @@ -2504,41 +2379,6 @@ RP2040のボードをUSBデバイスモードでLinuxのパソコンに接続し ]]></description> </item> <item> -<title>Holy Shit!</title> -<link>https://www.mtkn.jp/journal/posts/20221228.html</link> -<guid>https://www.mtkn.jp/journal/posts/20221228.html</guid> -<pubDate>Wed, 28 Dec 2022 00:00:00 +0900</pubDate> -<description><![CDATA[<h1>Holy Shit!</h1> -<p>最近見ているプログラマの配信者がよく言っている。「Holy Shit!」Holyは聖なる、Shitはうんこという意味である。日本のプログラマもうんこという言葉を好むが、海外でも同じようである。 -</p> -<p> -ところでこの言葉の訳語はなにがいいかと考えていると思いがけずぴったりなものを思いついた:</p> -<p> -「すめらうんこ」 -</p> -<p> -そうそれは、すめらみことの落しもの(droppings)。嗚呼不敬。 -</p> -]]></description> -</item> -<item> -<title>不死身の特攻兵</title> -<link>https://www.mtkn.jp/books/978-4-06-288451-8.html</link> -<guid>https://www.mtkn.jp/books/978-4-06-288451-8.html</guid> -<pubDate>Wed, 23 Nov 2022 00:00:00 +0900</pubDate> -<description><![CDATA[<h1>不死身の特攻兵</h1> -<div class="author">鴻上尚史 著</div> -<time>2022-11-23</time> -<p>大東亜戦争において何度も特攻を命じられるも生還した佐々木友次という人の話。ベテランのパイロットだったために陸軍の特攻第一号に選ばれ、死んでこいと言われたが爆弾を落して帰ってきた人である。それも何度も。</p> -<p>第一章は著者が佐々木氏を知ったいきさつ。第二章は佐々木氏の伝記。第三章は著者の佐々木氏へのインタビュー。第四章は著者による戦争や特攻に関する考察。</p> -<p>第一章は導入である。</p> -<p>第二章は物語として面白かった。戦争や特攻といった理不尽なものに対して自分の信念を貫いた佐々木氏の生き方や考え方が痛快である。</p> -<p>第三章のインタビューでは佐々木氏が繰り返し口にした寿命という言葉が印象的だった。人間は寿命がくれば死に、それまでは生きる、というものである。たとえ戦死であろうともそれがその人の寿命であるとの認識であるようだ。この考えにはとても共感できる。</p> -<p>第四章はかなり客観的に書かれているように思う。その上で著者自身の考えを述べているので読みやすかった。しかし読み進めるにつれてだんだんともやもやが溜っていった。当時の日本を支配していた空気があまりにも重苦しい。しかもその空気は、現在の日本にあるものとほとんど同じであると感じた。ここ最近僕が感じているこの国の暗い部分は大東亜戦争のころからなにも変らずに受け継がれているようである。せっかく無様に負けたのに本当の意味での反省を一切していないためか、なにも変っていない。余りにも勿体無く、戦没者にも失礼である。</p> -<p>もっと歴史を勉強し、今の生き方に反映しなければと考えさせてくれる本だった。</p> -]]></description> -</item> -<item> <title>大阪駅にて</title> <link>https://www.mtkn.jp/journal/posts/20221031.html</link> <guid>https://www.mtkn.jp/journal/posts/20221031.html</guid> diff --git a/pub/sitemap.xml b/pub/sitemap.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> -<url><loc>https://www.mtkn.jp/</loc><lastmod>2023-12-28</lastmod></url> +<url><loc>https://www.mtkn.jp/journal/posts/20221228.html</loc><lastmod>2023-12-28</lastmod></url> +<url><loc>https://www.mtkn.jp/books/</loc><lastmod>2023-11-23</lastmod></url> +<url><loc>https://www.mtkn.jp/books/978-4-06-288451-8.html</loc><lastmod>2023-11-23</lastmod></url> <url><loc>https://www.mtkn.jp/journal/posts/20220730.html</loc><lastmod>2023-05-15</lastmod></url> <url><loc>https://www.mtkn.jp/journal/posts/20210106.html</loc><lastmod>2023-05-15</lastmod></url> +<url><loc>https://www.mtkn.jp/</loc><lastmod>2023-05-15</lastmod></url> <url><loc>https://www.mtkn.jp/computer/xlib_playground6.html</loc><lastmod>2023-05-15</lastmod></url> <url><loc>https://www.mtkn.jp/computer/xlib_playground5.html</loc><lastmod>2023-05-15</lastmod></url> <url><loc>https://www.mtkn.jp/computer/xlib_playground4.html</loc><lastmod>2023-05-15</lastmod></url> @@ -12,16 +15,12 @@ <url><loc>https://www.mtkn.jp/computer/what-i-use.html</loc><lastmod>2023-05-15</lastmod></url> <url><loc>https://www.mtkn.jp/computer/</loc><lastmod>2023-05-15</lastmod></url> <url><loc>https://www.mtkn.jp/computer/archlinux_installation.html</loc><lastmod>2023-05-15</lastmod></url> -<url><loc>https://www.mtkn.jp/computer/rp2040_2.html</loc><lastmod>2023-05-11</lastmod></url> <url><loc>https://www.mtkn.jp/computer/rp2040_1.html</loc><lastmod>2023-05-09</lastmod></url> <url><loc>https://www.mtkn.jp/poetry/</loc><lastmod>2023-03-21</lastmod></url> <url><loc>https://www.mtkn.jp/journal/posts/20230119.html</loc><lastmod>2023-01-19</lastmod></url> <url><loc>https://www.mtkn.jp/journal/</loc><lastmod>2023-01-19</lastmod></url> <url><loc>https://www.mtkn.jp/farm/</loc><lastmod>2023-01-19</lastmod></url> <url><loc>https://www.mtkn.jp/about.html</loc><lastmod>2023-01-19</lastmod></url> -<url><loc>https://www.mtkn.jp/journal/posts/20221228.html</loc><lastmod>2022-12-28</lastmod></url> -<url><loc>https://www.mtkn.jp/books/</loc><lastmod>2022-11-23</lastmod></url> -<url><loc>https://www.mtkn.jp/books/978-4-06-288451-8.html</loc><lastmod>2022-11-23</lastmod></url> <url><loc>https://www.mtkn.jp/journal/posts/20221031.html</loc><lastmod>2022-10-31</lastmod></url> <url><loc>https://www.mtkn.jp/journal/posts/20221023.html</loc><lastmod>2022-10-23</lastmod></url> <url><loc>https://www.mtkn.jp/journal/posts/20220814.html</loc><lastmod>2022-08-16</lastmod></url>