| | 143 | |
| | 144 | |
| | 145 | 色々とググってみると、[https://stackoverflow.com/questions/24134958/my-custom-capes-devicetree-fails-to-load-at-boot-but-can-be-loaded-manually My custom cape's devicetree fails to load at boot, but can be loaded manually]というページがあり、その中に2つの解決方法が記載されていた。[[br]] |
| | 146 | 1つは、EEPROMでのロードは諦めて、ブート後にソフトウェア的に{{{/etc/default/capemgr}}}に記述されたfirmwareをロードするというものだった。[[br]] |
| | 147 | 何かこれじゃない感がするけど実際にやってみると、ロードされているようだった。 |
| | 148 | |
| | 149 | {{{ |
| | 150 | root@beaglebone:~# dmesg |
| | 151 | : |
| | 152 | [ 2.343437] bone_capemgr bone_capemgr: Baseboard: 'A335BNLT,00C0,3115BBBK0805' |
| | 153 | [ 2.343471] bone_capemgr bone_capemgr: compatible-baseboard=ti,beaglebone-black - #slots=4 |
| | 154 | [ 2.382144] bone_capemgr bone_capemgr: slot #0: 'RS232C Tiny Cape,00A0,KEK cERL CTRL,cape-uart-tiny' |
| | 155 | [ 2.422052] bone_capemgr bone_capemgr: slot #1: No cape found |
| | 156 | [ 2.462047] bone_capemgr bone_capemgr: slot #2: No cape found |
| | 157 | [ 2.502045] bone_capemgr bone_capemgr: slot #3: No cape found |
| | 158 | [ 2.502315] bone_capemgr bone_capemgr: initialized OK. |
| | 159 | : |
| | 160 | [ 3.514427] bone_capemgr bone_capemgr: loader: failed to load slot-0 cape-uart-tiny:00A0 (prio 0) |
| | 161 | : |
| | 162 | [ 18.411708] bone_capemgr bone_capemgr: part_number 'cape-uart-tiny', version 'N/A' |
| | 163 | [ 18.411745] bone_capemgr bone_capemgr: slot #4: override |
| | 164 | [ 18.411762] bone_capemgr bone_capemgr: Using override eeprom data at slot 4 |
| | 165 | [ 18.411779] bone_capemgr bone_capemgr: slot #4: 'Override Board Name,00A0,Override Manuf,cape-uart-tiny' |
| | 166 | [ 18.472173] 48022000.serial: ttyS1 at MMIO 0x48022000 (irq = 199, base_baud = 3000000) is a 8250 |
| | 167 | [ 18.493383] 48024000.serial: ttyS2 at MMIO 0x48024000 (irq = 200, base_baud = 3000000) is a 8250 |
| | 168 | [ 18.510449] bone_capemgr bone_capemgr: slot #4: dtbo 'cape-uart-tiny-00A0.dtbo' loaded; overlay id #0 |
| | 169 | : |
| | 170 | |
| | 171 | root@beaglebone:~# cat /sys/devices/platform/bone_capemgr/slots |
| | 172 | 0: P----- -1 RS232C Tiny Cape,00A0,KEK cERL CTRL,cape-uart-tiny |
| | 173 | 1: PF---- -1 |
| | 174 | 2: PF---- -1 |
| | 175 | 3: PF---- -1 |
| | 176 | 4: P-O-L- 0 Override Board Name,00A0,Override Manuf,cape-uart-tiny |
| | 177 | }}} |
| | 178 | |
| | 179 | 2つ目が、どうやら本当の解決法らしいが色々と面倒そう。[[br]] |
| | 180 | 言いたいこととしては、initrdが起動してinitramfs上に展開されるが、その時点で展開されているファイル内にfirmwareファイルが入っていないからこの問題が起きるということのようだ。[[br]] |
| | 181 | 実際にfirmwareファイルが入っているのは、eMMCやSDカード内で、その領域がマウントされるのがinitrd内のcapemgrが認識した後だから当たり前といえば当たり前の話。 |
| | 182 | |
| | 183 | |