michaelengel
Posts: 1
Joined: Mon May 10, 2021 6:02 am

Enable JTAG in EEPROM on 4B - possible?

Mon May 10, 2021 6:09 am

Hi,

we're thinking of using the Raspberry Pi 4B for our labs in a course on system-level programming (including bare-metal and Arm assembler).

For the labs, it would be great if the students could debug their code using JTAG. While I can configure an alternative mode to enable JTAG pins by editing config.txt, it would be nice to configure the pins without using an SD card.

Is it possible to configure the alternative mode from the onboard boot loader EEPROM on the Raspberry Pi 4B?

- Michael

cleverca22
Posts: 3923
Joined: Sat Aug 18, 2012 2:33 pm

Re: Enable JTAG in EEPROM on 4B - possible?

Tue May 11, 2021 1:27 am

without a start4.elf file, the pi4 has no way to even turn on the arm core
so you must have start4.elf present somewhere (SD, network, usb), or the arm core wont be of any use

network boot might be a good option, since you can start out with everybody starting from the same image, but then have people run a custom image, based on the serial#

the pi4 also opens up an option that makes netboot simpler to customize

Code: Select all

[nix-shell:~/apps/rpi/lk-overlay]$ cat ~/apps/rpi/rpi-eeprom/firmware/beta/bootconf.txt 
[all]
BOOT_UART=1
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
TFTP_IP=192.168.2.15
TFTP_PREFIX=0
SD_BOOT_MAX_RETRIES=3
NET_BOOT_MAX_RETRIES=5
BOOT_ORDER=0x5241
with this, my pi4 will be able to netboot from a specific machine

you could for example, pair up each computer in the lab to a single pi4, and then it will boot from whatever firmware is in ~/tftproot, allowing easy modification of its full config (firmware config, firmware version, baremetal kernel)

Return to “Bare metal, Assembly language”