Хабы: Программирование микроконтроллеров, C, Assembler, FPGA
Во время работы в ASIC дизайн центре я потратил немало времени на отладку ошибок и падений ядра, просматривая временные диаграммы на шинах AXI от процессора к памяти. Иногда оказывалось, что адрес чтения из памяти оказывался 0x00000000
- классический случай разыменования нулевого указателя в C. На системах с ОС это приводит к известному всем C программистам segfault-у. И в bare metal системах разыменование NULL
может приводить к интересным ситуациям. В этой статье рассмотрим, что происходит при разыменовании NULL
, используя для пример open source RISC-V ядро scr1 и open source инструмент симуляции RTL Verilator.
Читать далее