Hello Somesh, On Sat, 24 Apr 2021 at 20:52, somesh deshmukh <someshdeshmuk...@gmail.com> wrote: > > Hi, > > The diff between the changed files is mentioned below. The default riscv > clock driver is recently updated and it includes the changes I was proposing. > > --- /rtems/bsps/riscv/riscv/console/console-config.c 2021-04-23 > 16:01:13.355468092 +0530 > +++ /quick-start/rtems/bsps/riscv/riscv/console/console-config.c 2021-04-24 > 21:08:55.000000000 +0530 > @@ -91,7 +91,7 @@ > stdout_path = ""; > } > > -#if RISCV_ENABLE_FRDME310ARTY_SUPPORT != 0 > +#if ((RISCV_ENABLE_FRDME310ARTY_SUPPORT != 0) || > (RISCV_CONSOLE_MAX_NS16550_DEVICES > 0)) > int root; > int soc; > root = fdt_path_offset(fdt, "/"); > @@ -318,7 +318,7 @@ > > rtems_termios_device_install( > path, > - &ns16550_handler_interrupt, > + &ns16550_handler_polled, Doesn't your UART support interrupts? Could you also paste your DTS?
> NULL, > &ctx->base > ); > > --- /rtems/spec/build/bsps/riscv/riscv/bsprv64imafdcmedany.yml 2021-04-23 > 16:01:13.563436275 +0530 > +++ /quick-start/rtems/spec/build/bsps/riscv/riscv/bsprv64imafdcmedany.yml > 2021-03-26 14:30:37.454515153 +0530 > @@ -12,7 +12,7 @@ > install: [] > links: > - role: build-dependency > - uid: ../../opto2 > + uid: ../../opto0 > - role: build-dependency > uid: grp > source: [] > > --- /rtems/bsps/riscv/shared/start/start.S 2021-04-23 16:01:13.359467480 +0530 > +++ /quick-start/rtems/bsps/riscv/shared/start/start.S 2021-03-18 > 11:16:47.608079073 +0530 > @@ -74,17 +74,18 @@ > LADDR sp, _ISR_Stack_area_end > #endif > > +/* Clear .bss */ > +LADDR a0, bsp_section_bss_begin > +li a1, 0 > +LADDR a2, bsp_section_bss_size > +call memset > + That shouldn't be a bug on the RTEMS side. It seems like your placed FDT overlaps with RAM/BSS area. How/where are you embedding the FDT? > #ifdef BSP_START_COPY_FDT_FROM_U_BOOT > mv a0, a1 > call bsp_fdt_copy > #endif > > - /* Clear .bss */ > - LADDR a0, bsp_section_bss_begin > - li a1, 0 > - LADDR a2, bsp_section_bss_size > - call memset > - > #ifdef RTEMS_SMP > /* Give go to secondary processors */ > LADDR t0, .Lsecondary_processor_go > > Let me know if you have any comments/suggestions for the above changes. > > Regards, > Somesh > > On Fri, Apr 23, 2021 at 5:15 PM Joel Sherrill <j...@rtems.org> wrote: >> >> I agree with Karel that a diff posted would be appreciated. It.would be nice >> to see this worked through and merged. Also updates to the Users Guide on >> this. >> >> On Thu, Apr 22, 2021, 10:52 PM somesh deshmukh <someshdeshmuk...@gmail.com> >> wrote: >>> >>> I was able to test the rtems hello-world example and ticker example on the >>> polarfire soc icicle kit. >>> >>> A little background about Polarfire SoC ICICLE Kit. >>> The PolarFire SoC Icicle kit is a low-cost development platform that >>> enables the evaluation of the five-core Linux capable RISC-V microprocessor >>> subsystem. It includes >>> >>> SiFive E51 Monitor core (1 x RV64IMAC) >>> SiFive U54 Application cores (4 x RV64GC) >>> >>> More info is available at the link below: >>> https://www.microsemi.com/existing-parts/parts/152514 >>> >>> There were few changes I had to make in the rtems source code to make it >>> work, as mentioned below. >>> >>> 1. In the startup code the bsp_fdt_copy copies the device tree blob from >>> the address from #a1 register to the .rodata section. This is followed by a >>> memset operation for the bss section. >>> The problem was the call to a memset function was clearing the device tree >>> blob copied in the bsp_fdt_copy() operation. >>> To fix this I performed the memset first and then bsp_fdt_copy operation. >> >> >> This sounds like a bug from what you describe. Patch will show. >>> >>> >>> 2. The riscv_console_probe() will try to read the console_node from the >>> device tree. The original code provided for ns16550 UART was not able to >>> read the console node from the device tree correctly. >>> To fix this I used the sifive code to read the console node. The sifive >>> code was limited to only sifive-uart. >> >> >> We'll have to see. This may require more smarts in the console driver to >> support both. Or a BSP variant. >> >> >>> >>> 3. RTEMS uses -O2 as default optimization settings. With these settings, we >>> were facing a trap while trying to perform the open call on the console >>> device after mounting the file system. >>> To fix this I changed the optimization to -O0 and it resolved the issue. >>> I need to debug this more to find the exact cause. >> >> >> This is unfortunate. Could be anything from a driver missing a volatile to >> bad code generation. You can try at different optimisation levels and that >> narrows down things a bit. You are right. This requires debugging. >> >>> >>> 4. The default clock driver simply assumes that the code is running on >>> hart0. This was breaking the ticker example testing. >>> To fix this I updated the clock driver to read the hart ID and then >>> configure the >>> mtimecmp register accordingly. >> >> >> This sounds like an improvement. >> >>> >>> Let me know if these changes are valid. >> >> >> Patches welcome and then we shall see. >>> >>> >>> >>> Regards, >>> Somesh >>> >>> >>> _______________________________________________ >>> devel mailing list >>> devel@rtems.org >>> http://lists.rtems.org/mailman/listinfo/devel > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel