0
[i]в стартовом коде gcc это так. Если используется nostartfiles или другой компилятор и названия секций и их количество может быть любое.[/i] — это все определяется скриптом линкера. для pic32mx делать сколь угодно серьезные проекты не получится, если не разобраться с яул. если использовать xc32 — там вылезет еще вагон откровенно говоря кривых микрочиповских вещей.
в файле линкера
[code]
ENTRY(_reset)

_RESET_ADDR = 0xBFC00000;

.reset _RESET_ADDR:
{
KEEP(*(.reset))
KEEP(*(.reset.startup))
} > kseg1_boot_mem
[/code]
вообще говоря трезвая мысль разбить boot на несколько секций — одна — та часть, что меняться не будет, другая — та что будет меняться в случае если Вы наскоро организовали перепрошивку по одному из интерфейсов.
[i]Если есть очень много глобальных переменных, данная оптимизация будет не эфективна[/i] — почему? у многих микрочиповских мк меньше 64КiB SRAM. учитывая fmm mmu то имеет смысл указать на середину памяти. любое обращение gp-rel. (при переключении потоков на аpplication, которые в useg нужно просто поменять первые цифры gp, а при вызовах ядра — восстановить).
[i]как работает mips архитектура и какой код генерируется gcc для неё.[/i] — в среднем для разработки под pic32mx значительную часть проекта проще писать на ассемблере, чем на С.

pic32mx1xx2xx5xx очень экономически целесообразные. цены старших вызывают вопросы.
  • avatar
  • egan-ru
  • 05 марта 2017, 14:37
0
1) «Эта секция находится в файле crt0.S» — ну да. или еще в каком-нибудь. исполнение начинается с 0xBFC00000 и по сути секция по этому адресу может называться как угодно.
2) "_gp вычисляется линковщиком как конец начало сегмента(.data) + 32000" — он вообще-то задан линковщиком. что видно в примере выше. и в целом нет никаких ограничений по тому, какой будет глобальный указатель. будет указывать в другое место — %gp_rel будет действовать от другого места.
3) «В семействе PIC32MX есть два набора регистров: нормальный набор набор для обработки прерываний» — теневой набор регистров можно использовать по своему усмотрению и не во всех pic32mx есть такое. в дешевых pic32mx такого нет. pic32mx1xx2xx5xx обладают одним набором. и дешевые pic32mx закономерно самые популярные.
4) «У нас есть только пространство пользователя, потому что мы пишем под контроллер без защиты памяти (MMU), используем только kernel space адреса.» — MMU кстати там fixed mapping. использовать или нет usermode исключительно дело программиста. более того, использовать ioctl из usermode для application очень даже трезвая идея.

в двух слова — домыслы с откровенно говоря странными выводами.
  • avatar
  • egan-ru
  • 04 марта 2017, 15:30