aboutsummaryrefslogtreecommitdiffstats
path: root/picosoc/firmware.c
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2018-04-16 20:04:01 +0200
committerMiodrag Milanovic <mmicko@gmail.com>2018-04-16 20:04:01 +0200
commit9300a510c55cca4e9706bd13b7e3b9f37d658ce0 (patch)
tree789951375b400def0a79861b9f204fd265b1b2d2 /picosoc/firmware.c
parenta1f22a6d9c59812e8e8ccdee153410f16ee71f94 (diff)
downloadpicorv32-9300a510c55cca4e9706bd13b7e3b9f37d658ce0.tar.gz
picorv32-9300a510c55cca4e9706bd13b7e3b9f37d658ce0.zip
Created lfs file (section mappint) and init for data and bss sections
Diffstat (limited to 'picosoc/firmware.c')
-rw-r--r--picosoc/firmware.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/picosoc/firmware.c b/picosoc/firmware.c
index 5c0bec1..7e60932 100644
--- a/picosoc/firmware.c
+++ b/picosoc/firmware.c
@@ -340,8 +340,19 @@ void cmd_benchmark_all()
// --------------------------------------------------------
+extern uint32_t _sidata, _sdata, _edata, _sbss, _ebss;
+
void main()
-{
+{
+ // copy data section
+ for (uint32_t *src = &_sidata, *dest = &_sdata; dest < &_edata;) {
+ *dest++ = *src++;
+ }
+ // zero out .bss section
+ for (uint32_t *dest = &_sbss; dest < &_ebss;) {
+ *dest++ = 0;
+ }
+
reg_uart_clkdiv = 104;
set_flash_qspi_flag();