Replies: 8 comments 1 reply
-
UpdateMMC Bus Voltage ConfigWith the help of gdb this morning I found the problem.
mmccard_oper_config()The next problem is that |
Beta Was this translation helpful? Give feedback.
-
I can build v2023.09 HSS with the default icicle config, and run it on a physical icicle board without any issues. |
Beta Was this translation helpful? Give feedback.
-
Hi @sastel, I know this is a bit unrelated to the eMMC issue but did you get to the bottom of the DDR training not getting past 80% Thanks Andy |
Beta Was this translation helpful? Give feedback.
-
@AndrewCapon @sarah18-z I abandoned this effort without solving it. I ran into too many problems when trying to use Renode for embedded issues. Instead I'm debugging on hardware. |
Beta Was this translation helpful? Give feedback.
-
Hi @sastel, Thanks very much for the info, I'm seeing the same issue in a different setup. Very annoying! All the best Andy |
Beta Was this translation helpful? Give feedback.
-
@AndrewCapon no problem. Not sure what your requirements are, but you could try launching your application .elf/.hex directly in Renode, bypassing the HSS. You won't be able to test the bootloader that way, but at least you can run your application. I used this to debug C++ exception handling on PolarFire. You may still encounter issues though with low level peripheral accesses. |
Beta Was this translation helpful? Give feedback.
-
Thanks, I will give it a go. I have tried bypassing the DDR training, but that leads to further problems down the line. Here I think it is caused by some AXI4 streaming logic, well anyway if I remove that the problem goes away :) I will dig deeper... Many thanks Andy |
Beta Was this translation helpful? Give feedback.
-
Hello @AndrewCapon @sastel , I have some updates that might help you. I managed to get past the DDR insertion error by using HSS version 0.99.33, and it works correctly with Renode version 1.15.0. For DDR training, I simply disabled it in my HSS configuration. Now, another problem has arisen: the HSS is unable to boot from the eMMC, and I am still working on it. |
Beta Was this translation helpful? Give feedback.
-
Summary
Greetings dear readers.
I'm just getting into PolarFire SoC, and I am trying to run a custom build of the HSS in Renode. Earlier this week I was able to run the default
icicle-kit.resc
from renode with no issues. This script runs the HSS (0.99.7), U-Boot, and Linux. I also hacked up the icicle renode examples to launch baremetal NuttX without the HSS, and was greeted by the nsh prompt. So far so good.The next step is to try to build the HSS to launch Nuttx on Renode. When I tried to build HSS from v2023.6, I ran into multiple issues culminating in MMC related failures. I'm hoping someone help me to understand if I'm making mistakes, or if I'm dealing with an HSS or Renode problem.
The Setup
Versions
HSS Build Commands:
My Renode Scripts
I have not modified any of the underlying scripts from renode, only
icicle-kit.resc
. I am tracking my changes in a local git repo. Here is the version I have hacked up for my testing.I don't think the payload matters at this point, because the issues I'm encountering are occurring in the HSS.
icicle-kit.resc
:polarfire-soc.resc
:Issues
1. DDR Training
DDR Training hangs at 80%. The solution to this was to set
CONFIG_SKIP_DDR=y
inboards/mpfs-icicle-kit-es/def_config
in the HSS project, then rebuild.Is it expected behaviour that a renode sim will hang at 80% DDR training?
2. DDR Init Assertion
The values I saw were:
The comment above the assert in the code implies that this is an issue with the linker scripts. I'm guessing it really means the HSS has been configured with too many features for the available L2 space. I was able to shrink it down by fiddling somewhat ignorantly with the configuration. I turned off the following:
CONFIG_SERVICE_BEU
CONFIG_SERVICE_MMC_MODE_SDCARD
CONFIG_USE_PCIE
CONFIG_USE_IHC
CONFIG_COLOR_OUTPUT
CONFIG_USE_LOGO
CONFIG_DEBUG_PERF_CTRS
CONFIG_DEBUG_PERF_CTRS_NUM
Am I on the right track here, and if so, what would you suggest removing?
3.
Attempting to select eMMC ... Failed
This is as far as I've gotten so far. This seems to be a problem with the HSS and renode.
HSS_MMCInit()
is returning 0, and this is because mmc_init_emmc() fails. MSS_MMC_init() is returning2 == MSS_MMC_NOT_INITIALIZED
. This gets into the depths ofmss_mmc.c
. I'm wondering if the HSS software is making assumptions about the MMC that aren't valid in the renode emulation.Does anyone have any suggestions for what to do next?
Wow, that's a lot of information. I've tried to describe it well. Hopefully it is concise enough and not too verbose. Thanks for making it to the end of this post!
Beta Was this translation helpful? Give feedback.
All reactions