aboutsummaryrefslogtreecommitdiff
path: root/linker
Commit message (Collapse)AuthorAge
* Fix the linker script to put the .got section in flash.HEADmasterJosh Rahm2022-12-12
| | | | | | | | | | | | The .got section contains global variables an offsets. Specifically it contains the linker script variables. The linker will automatically put this section .data, which is not what we want because those values will not be initialized. So we put the .got section in flash so the value is initialized. Without this, there is bizarre behavior on some compilers where linker variables will be undefined.
* Refactor the linker script to make more sense.broken_linkerJosh Rahm2022-12-09
| | | | | | | Specifically this moves the inits into the .text section. This also move the data and bss segments into sram2 to give the heap and stack more space to work with in sram1.
* Fixed linker script on desktopJosh Rahm2022-12-08
|
* Add broken linker stuff to test on desktop.Josh Rahm2022-12-08
|
* Fix Init Level Logging.Josh Rahm2021-10-26
| | | | | | | | | | | | | The linker script was broken because the init_boundaries were showing the incorrect value. It's fixed now. Unfortunately there's a bizarre bug where if I add another klogf() statement in the run_init_routines() function, I lose _all_ logging. I have no idea what is causing this! The only thing I can think of in an honsest-to-god complier bug. It probably has to do with some bizarre-o optimizations GCC is doing. In the time being I had to shuffle the finishing routines logging to the init() function directly ... unfortunate.
* I figured out how to align the data section.Josh Rahm2021-10-26
| | | | | | I tried this before, I swear and it didn't work. Not sure what I did to make it work this time. I guess that goat I sacrificed appeased the right gods.
* Removed the requirement for the init data to be aligned.Josh Rahm2021-10-26
| | | | | | I don't yet know how to configure the the initscript to align the INIT_DATA_VALUES. Nothing seems to work. But whatever, it seems like things work and it's a very minor performance hit.
* Fixed annoying bug with bootup when compiling with new GCC.Josh Rahm2021-10-26
| | | | | | | | | | | | | | The problem was the BSS segment was not aligned with size 4, thus the routine to clear the BSS segment was infinite looping, clobbering everything in it's wake until it ran off the memory edge and caused a hard fault. This commit does a couple of things. 1. Fixes the alignment issue in the linker script 2. Panics if the bss/data segments are not aligned properly 3. Makes the logging the _first_ thing to initialize. Much easier to debug that way!
* Fixed another bug with the linker script.Josh Rahm2020-11-28
| | | | | Before this commit, the heap overlapped with the BSS, which predicatbly broke everything once trying to use the heap.
* Changes to painic. It now prints the stack at the time of failure (if ↵Josh Rahm2020-11-24
| | | | logging is initialized).
* Fix kalloc. Now the HEAP START and HEAP END globals are defined by the ↵Josh Rahm2020-11-24
| | | | linker script.
* Moved action to top level.Josh Rahm2020-11-24
Removed old iterations of the project and moved the files from 02-usart to the root directory since that's the sole place where the action is and that subproject has outgrown its initial title.