Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-22 Thread Sean Anderson
On 2/22/24 05:34, Michal Simek wrote:
>
>
> On 2/20/24 20:30, Sean Anderson wrote:
>> On 2/20/24 14:18, Michal Simek wrote:
>>>
>>>
>>> On 2/20/24 19:43, Sean Anderson wrote:
 On 2/20/24 13:24, Michal Simek wrote:
>
>
> On 2/16/24 17:09, Sean Anderson wrote:
>> On 2/16/24 11:03, Sean Anderson wrote:
>>> On 2/16/24 10:06, Michal Simek wrote:


 On 2/16/24 14:48, Michal Simek wrote:
>
>
> On 2/15/24 20:31, Sean Anderson wrote:
>> On 2/15/24 14:08, Michal Simek wrote:
>>>
>>>
>>> On 2/15/24 18:19, Sean Anderson wrote:
 Currently, when we boot from JTAG we try to boot U-Boot from RAM.
 However, this is a bit tricky to time, since the debugger has to 
 wait
 for SPL to initialize RAM before it can load U-Boot. This can 
 result in
 long waits, since occasionally initializing RAM (and other things 
 in
 psu_init) takes a long time to complete and the debugger must wait 
 for
 this worst case.

 Support semihosting if it is enabled, as it lets U-Boot tell the
 debugger when we are ready for the image. This means we don't have 
 to
 wait any more than necessary. We don't change the default config to
 ensure we don't break compatibility with existing debuggers that 
 don't
 expect us to hit semihosting breakpoints.

 Signed-off-by: Sean Anderson 
 ---

   arch/arm/mach-zynqmp/spl.c | 10 --
   1 file changed, 8 insertions(+), 2 deletions(-)

 diff --git a/arch/arm/mach-zynqmp/spl.c 
 b/arch/arm/mach-zynqmp/spl.c
 index a0f35f36faa..5af735aa5ce 100644
 --- a/arch/arm/mach-zynqmp/spl.c
 +++ b/arch/arm/mach-zynqmp/spl.c
 @@ -9,6 +9,7 @@
   #include 
   #include 
   #include 
 +#include 
   #include 
   #include 

 @@ -66,6 +67,11 @@ void spl_board_init(void)
   }
   #endif

 +static u32 jtag_boot_device(void)
 +{
 +   return semihosting_enabled() ? BOOT_DEVICE_SMH : 
 BOOT_DEVICE_RAM;
 +}
 +
   void board_boot_order(u32 *spl_boot_list)
   {
  spl_boot_list[0] = spl_boot_device();
 @@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
  if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
  spl_boot_list[1] = BOOT_DEVICE_MMC1;

 -   spl_boot_list[2] = BOOT_DEVICE_RAM;
 +   spl_boot_list[2] = jtag_boot_device();
   }

   u32 spl_boot_device(void)
 @@ -97,7 +103,7 @@ u32 spl_boot_device(void)

  switch (bootmode) {
  case JTAG_MODE:
 -   return BOOT_DEVICE_RAM;
 +   return jtag_boot_device();
   #ifdef CONFIG_SPL_MMC
  case SD_MODE1:
  case SD1_LSHFT_MODE: /* not working on silicon v1 */
>>>
>>> Good timing. Can you please tell me how to test this? What's the 
>>> setup?
>>> Which debugger are you using?
>>
>> I am using OpenOCD with the patches at 
>> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2freview.openocd.org%2fc%2fopenocd%2f%2b%2f8133=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-afc15b07b0f91c910f832185958363d84f990a08
>>
>
> I am trying it on the top of the latest git but getting issue with 
> event block and no idea how to fix it.
>
> # sudo openocd -f 
> /usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_hs3.cfg 
> -f /usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg
> Open On-Chip Debugger 0.12.0+dev-01509-g6d288937cb2d 
> (2024-02-16-12:22)
> Licensed under GNU GPL v2
> For bug reports, read
> 
> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
> Info : auto-selecting first available session transport "jtag". To 
> override use 'transport select '.
> wrong # args: should be "-event  "
>
>
> Do you know how to 

Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-22 Thread Michal Simek




On 2/20/24 20:30, Sean Anderson wrote:

On 2/20/24 14:18, Michal Simek wrote:



On 2/20/24 19:43, Sean Anderson wrote:

On 2/20/24 13:24, Michal Simek wrote:



On 2/16/24 17:09, Sean Anderson wrote:

On 2/16/24 11:03, Sean Anderson wrote:

On 2/16/24 10:06, Michal Simek wrote:



On 2/16/24 14:48, Michal Simek wrote:



On 2/15/24 20:31, Sean Anderson wrote:

On 2/15/24 14:08, Michal Simek wrote:



On 2/15/24 18:19, Sean Anderson wrote:

Currently, when we boot from JTAG we try to boot U-Boot from RAM.
However, this is a bit tricky to time, since the debugger has to wait
for SPL to initialize RAM before it can load U-Boot. This can result in
long waits, since occasionally initializing RAM (and other things in
psu_init) takes a long time to complete and the debugger must wait for
this worst case.

Support semihosting if it is enabled, as it lets U-Boot tell the
debugger when we are ready for the image. This means we don't have to
wait any more than necessary. We don't change the default config to
ensure we don't break compatibility with existing debuggers that don't
expect us to hit semihosting breakpoints.

Signed-off-by: Sean Anderson 
---

  arch/arm/mach-zynqmp/spl.c | 10 --
  1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
index a0f35f36faa..5af735aa5ce 100644
--- a/arch/arm/mach-zynqmp/spl.c
+++ b/arch/arm/mach-zynqmp/spl.c
@@ -9,6 +9,7 @@
  #include 
  #include 
  #include 
+#include 
  #include 
  #include 

@@ -66,6 +67,11 @@ void spl_board_init(void)
  }
  #endif

+static u32 jtag_boot_device(void)
+{
+   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
+}
+
  void board_boot_order(u32 *spl_boot_list)
  {
 spl_boot_list[0] = spl_boot_device();
@@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
 if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
 spl_boot_list[1] = BOOT_DEVICE_MMC1;

-   spl_boot_list[2] = BOOT_DEVICE_RAM;
+   spl_boot_list[2] = jtag_boot_device();
  }

  u32 spl_boot_device(void)
@@ -97,7 +103,7 @@ u32 spl_boot_device(void)

 switch (bootmode) {
 case JTAG_MODE:
-   return BOOT_DEVICE_RAM;
+   return jtag_boot_device();
  #ifdef CONFIG_SPL_MMC
 case SD_MODE1:
 case SD1_LSHFT_MODE: /* not working on silicon v1 */


Good timing. Can you please tell me how to test this? What's the setup?
Which debugger are you using?


I am using OpenOCD with the patches at 
https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2freview.openocd.org%2fc%2fopenocd%2f%2b%2f8133=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-afc15b07b0f91c910f832185958363d84f990a08



I am trying it on the top of the latest git but getting issue with event block 
and no idea how to fix it.

# sudo openocd -f 
/usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_hs3.cfg -f 
/usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg
Open On-Chip Debugger 0.12.0+dev-01509-g6d288937cb2d (2024-02-16-12:22)
Licensed under GNU GPL v2
For bug reports, read

https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
Info : auto-selecting first available session transport "jtag". To override use 
'transport select '.
wrong # args: should be "-event  "


Do you know how to fix it?



I actually bisect it and found that it is caused by
jtag: rewrite jim_jtag_configure() as COMMAND_HANDLER
ea2e26f7d521f5755b4bfda7bf12d99650277421


Interesting. I have been testing with 0.12.


# sudo openocd -f 
/usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_smt2_nc.cfg -f 
/usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg


FWIW after installing the udev rules I do not need sudo


Open On-Chip Debugger 0.12.0+dev-01512-g214206ebb972 (2024-02-16-15:38)
Licensed under GNU GPL v2
For bug reports, read
   
https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
none separate
Info : auto-selecting first available session transport "jtag". To override use 
'transport select '.
Info : Hardware thread awareness created
boot_apu
Info : Listening on port  for tcl connections
Info : Listening on port  for telnet connections
Warn : An adapter speed is not selected in the init scripts. OpenOCD will try 
to run the adapter at very low speed (100 kHz).
Warn : To remove this warnings and achieve reasonable communication speed with the target, set 
"adapter speed" or "jtag_rclk" in the init scripts.
Info : 

Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-20 Thread Sean Anderson
On 2/20/24 14:18, Michal Simek wrote:
>
>
> On 2/20/24 19:43, Sean Anderson wrote:
>> On 2/20/24 13:24, Michal Simek wrote:
>>>
>>>
>>> On 2/16/24 17:09, Sean Anderson wrote:
 On 2/16/24 11:03, Sean Anderson wrote:
> On 2/16/24 10:06, Michal Simek wrote:
>>
>>
>> On 2/16/24 14:48, Michal Simek wrote:
>>>
>>>
>>> On 2/15/24 20:31, Sean Anderson wrote:
 On 2/15/24 14:08, Michal Simek wrote:
>
>
> On 2/15/24 18:19, Sean Anderson wrote:
>> Currently, when we boot from JTAG we try to boot U-Boot from RAM.
>> However, this is a bit tricky to time, since the debugger has to wait
>> for SPL to initialize RAM before it can load U-Boot. This can result 
>> in
>> long waits, since occasionally initializing RAM (and other things in
>> psu_init) takes a long time to complete and the debugger must wait 
>> for
>> this worst case.
>>
>> Support semihosting if it is enabled, as it lets U-Boot tell the
>> debugger when we are ready for the image. This means we don't have to
>> wait any more than necessary. We don't change the default config to
>> ensure we don't break compatibility with existing debuggers that 
>> don't
>> expect us to hit semihosting breakpoints.
>>
>> Signed-off-by: Sean Anderson 
>> ---
>>
>>  arch/arm/mach-zynqmp/spl.c | 10 --
>>  1 file changed, 8 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
>> index a0f35f36faa..5af735aa5ce 100644
>> --- a/arch/arm/mach-zynqmp/spl.c
>> +++ b/arch/arm/mach-zynqmp/spl.c
>> @@ -9,6 +9,7 @@
>>  #include 
>>  #include 
>>  #include 
>> +#include 
>>  #include 
>>  #include 
>>
>> @@ -66,6 +67,11 @@ void spl_board_init(void)
>>  }
>>  #endif
>>
>> +static u32 jtag_boot_device(void)
>> +{
>> +   return semihosting_enabled() ? BOOT_DEVICE_SMH : 
>> BOOT_DEVICE_RAM;
>> +}
>> +
>>  void board_boot_order(u32 *spl_boot_list)
>>  {
>> spl_boot_list[0] = spl_boot_device();
>> @@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
>> if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
>> spl_boot_list[1] = BOOT_DEVICE_MMC1;
>>
>> -   spl_boot_list[2] = BOOT_DEVICE_RAM;
>> +   spl_boot_list[2] = jtag_boot_device();
>>  }
>>
>>  u32 spl_boot_device(void)
>> @@ -97,7 +103,7 @@ u32 spl_boot_device(void)
>>
>> switch (bootmode) {
>> case JTAG_MODE:
>> -   return BOOT_DEVICE_RAM;
>> +   return jtag_boot_device();
>>  #ifdef CONFIG_SPL_MMC
>> case SD_MODE1:
>> case SD1_LSHFT_MODE: /* not working on silicon v1 */
>
> Good timing. Can you please tell me how to test this? What's the 
> setup?
> Which debugger are you using?

 I am using OpenOCD with the patches at 
 https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2freview.openocd.org%2fc%2fopenocd%2f%2b%2f8133=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-afc15b07b0f91c910f832185958363d84f990a08

>>>
>>> I am trying it on the top of the latest git but getting issue with 
>>> event block and no idea how to fix it.
>>>
>>> # sudo openocd -f 
>>> /usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_hs3.cfg 
>>> -f /usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg
>>> Open On-Chip Debugger 0.12.0+dev-01509-g6d288937cb2d (2024-02-16-12:22)
>>> Licensed under GNU GPL v2
>>> For bug reports, read
>>>
>>> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
>>> Info : auto-selecting first available session transport "jtag". To 
>>> override use 'transport select '.
>>> wrong # args: should be "-event  "
>>>
>>>
>>> Do you know how to fix it?
>>
>>
>> I actually bisect it and found that it is caused by
>> jtag: rewrite jim_jtag_configure() as COMMAND_HANDLER
>> ea2e26f7d521f5755b4bfda7bf12d99650277421
>
> Interesting. I have been testing with 0.12.
>
>> # sudo openocd -f 
>> /usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_smt2_nc.cfg
>>  -f 

Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-20 Thread Michal Simek




On 2/20/24 19:43, Sean Anderson wrote:

On 2/20/24 13:24, Michal Simek wrote:



On 2/16/24 17:09, Sean Anderson wrote:

On 2/16/24 11:03, Sean Anderson wrote:

On 2/16/24 10:06, Michal Simek wrote:



On 2/16/24 14:48, Michal Simek wrote:



On 2/15/24 20:31, Sean Anderson wrote:

On 2/15/24 14:08, Michal Simek wrote:



On 2/15/24 18:19, Sean Anderson wrote:

Currently, when we boot from JTAG we try to boot U-Boot from RAM.
However, this is a bit tricky to time, since the debugger has to wait
for SPL to initialize RAM before it can load U-Boot. This can result in
long waits, since occasionally initializing RAM (and other things in
psu_init) takes a long time to complete and the debugger must wait for
this worst case.

Support semihosting if it is enabled, as it lets U-Boot tell the
debugger when we are ready for the image. This means we don't have to
wait any more than necessary. We don't change the default config to
ensure we don't break compatibility with existing debuggers that don't
expect us to hit semihosting breakpoints.

Signed-off-by: Sean Anderson 
---

 arch/arm/mach-zynqmp/spl.c | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
index a0f35f36faa..5af735aa5ce 100644
--- a/arch/arm/mach-zynqmp/spl.c
+++ b/arch/arm/mach-zynqmp/spl.c
@@ -9,6 +9,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 

@@ -66,6 +67,11 @@ void spl_board_init(void)
 }
 #endif

+static u32 jtag_boot_device(void)
+{
+   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
+}
+
 void board_boot_order(u32 *spl_boot_list)
 {
spl_boot_list[0] = spl_boot_device();
@@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
spl_boot_list[1] = BOOT_DEVICE_MMC1;

-   spl_boot_list[2] = BOOT_DEVICE_RAM;
+   spl_boot_list[2] = jtag_boot_device();
 }

 u32 spl_boot_device(void)
@@ -97,7 +103,7 @@ u32 spl_boot_device(void)

switch (bootmode) {
case JTAG_MODE:
-   return BOOT_DEVICE_RAM;
+   return jtag_boot_device();
 #ifdef CONFIG_SPL_MMC
case SD_MODE1:
case SD1_LSHFT_MODE: /* not working on silicon v1 */


Good timing. Can you please tell me how to test this? What's the setup?
Which debugger are you using?


I am using OpenOCD with the patches at 
https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2freview.openocd.org%2fc%2fopenocd%2f%2b%2f8133=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-afc15b07b0f91c910f832185958363d84f990a08



I am trying it on the top of the latest git but getting issue with event block 
and no idea how to fix it.

# sudo openocd -f 
/usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_hs3.cfg -f 
/usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg
Open On-Chip Debugger 0.12.0+dev-01509-g6d288937cb2d (2024-02-16-12:22)
Licensed under GNU GPL v2
For bug reports, read
   
https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
Info : auto-selecting first available session transport "jtag". To override use 
'transport select '.
wrong # args: should be "-event  "


Do you know how to fix it?



I actually bisect it and found that it is caused by
jtag: rewrite jim_jtag_configure() as COMMAND_HANDLER
ea2e26f7d521f5755b4bfda7bf12d99650277421


Interesting. I have been testing with 0.12.


# sudo openocd -f 
/usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_smt2_nc.cfg -f 
/usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg


FWIW after installing the udev rules I do not need sudo


Open On-Chip Debugger 0.12.0+dev-01512-g214206ebb972 (2024-02-16-15:38)
Licensed under GNU GPL v2
For bug reports, read
  
https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
none separate
Info : auto-selecting first available session transport "jtag". To override use 
'transport select '.
Info : Hardware thread awareness created
boot_apu
Info : Listening on port  for tcl connections
Info : Listening on port  for telnet connections
Warn : An adapter speed is not selected in the init scripts. OpenOCD will try 
to run the adapter at very low speed (100 kHz).
Warn : To remove this warnings and achieve reasonable communication speed with the target, set 
"adapter speed" or "jtag_rclk" in the init scripts.
Info : clock speed 100 kHz
Info : TAP uscale.tap does not have valid IDCODE (idcode=0x48e70126)
Info : JTAG tap: 

Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-20 Thread Sean Anderson
On 2/20/24 13:24, Michal Simek wrote:
>
>
> On 2/16/24 17:09, Sean Anderson wrote:
>> On 2/16/24 11:03, Sean Anderson wrote:
>>> On 2/16/24 10:06, Michal Simek wrote:


 On 2/16/24 14:48, Michal Simek wrote:
>
>
> On 2/15/24 20:31, Sean Anderson wrote:
>> On 2/15/24 14:08, Michal Simek wrote:
>>>
>>>
>>> On 2/15/24 18:19, Sean Anderson wrote:
 Currently, when we boot from JTAG we try to boot U-Boot from RAM.
 However, this is a bit tricky to time, since the debugger has to wait
 for SPL to initialize RAM before it can load U-Boot. This can result in
 long waits, since occasionally initializing RAM (and other things in
 psu_init) takes a long time to complete and the debugger must wait for
 this worst case.

 Support semihosting if it is enabled, as it lets U-Boot tell the
 debugger when we are ready for the image. This means we don't have to
 wait any more than necessary. We don't change the default config to
 ensure we don't break compatibility with existing debuggers that don't
 expect us to hit semihosting breakpoints.

 Signed-off-by: Sean Anderson 
 ---

 arch/arm/mach-zynqmp/spl.c | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

 diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
 index a0f35f36faa..5af735aa5ce 100644
 --- a/arch/arm/mach-zynqmp/spl.c
 +++ b/arch/arm/mach-zynqmp/spl.c
 @@ -9,6 +9,7 @@
 #include 
 #include 
 #include 
 +#include 
 #include 
 #include 

 @@ -66,6 +67,11 @@ void spl_board_init(void)
 }
 #endif

 +static u32 jtag_boot_device(void)
 +{
 +   return semihosting_enabled() ? BOOT_DEVICE_SMH : 
 BOOT_DEVICE_RAM;
 +}
 +
 void board_boot_order(u32 *spl_boot_list)
 {
spl_boot_list[0] = spl_boot_device();
 @@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
spl_boot_list[1] = BOOT_DEVICE_MMC1;

 -   spl_boot_list[2] = BOOT_DEVICE_RAM;
 +   spl_boot_list[2] = jtag_boot_device();
 }

 u32 spl_boot_device(void)
 @@ -97,7 +103,7 @@ u32 spl_boot_device(void)

switch (bootmode) {
case JTAG_MODE:
 -   return BOOT_DEVICE_RAM;
 +   return jtag_boot_device();
 #ifdef CONFIG_SPL_MMC
case SD_MODE1:
case SD1_LSHFT_MODE: /* not working on silicon v1 */
>>>
>>> Good timing. Can you please tell me how to test this? What's the setup?
>>> Which debugger are you using?
>>
>> I am using OpenOCD with the patches at 
>> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2freview.openocd.org%2fc%2fopenocd%2f%2b%2f8133=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-afc15b07b0f91c910f832185958363d84f990a08
>>
>
> I am trying it on the top of the latest git but getting issue with event 
> block and no idea how to fix it.
>
> # sudo openocd -f 
> /usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_hs3.cfg -f 
> /usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg
> Open On-Chip Debugger 0.12.0+dev-01509-g6d288937cb2d (2024-02-16-12:22)
> Licensed under GNU GPL v2
> For bug reports, read
>   
> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
> Info : auto-selecting first available session transport "jtag". To 
> override use 'transport select '.
> wrong # args: should be "-event  "
>
>
> Do you know how to fix it?


 I actually bisect it and found that it is caused by
 jtag: rewrite jim_jtag_configure() as COMMAND_HANDLER
 ea2e26f7d521f5755b4bfda7bf12d99650277421
>>>
>>> Interesting. I have been testing with 0.12.
>>>
 # sudo openocd -f 
 /usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_smt2_nc.cfg 
 -f /usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg
>>>
>>> FWIW after installing the udev rules I do not need sudo
>>>
 Open On-Chip Debugger 0.12.0+dev-01512-g214206ebb972 (2024-02-16-15:38)
 Licensed under GNU GPL v2
 For bug reports, read
  
 

Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-20 Thread Michal Simek




On 2/16/24 17:09, Sean Anderson wrote:

On 2/16/24 11:03, Sean Anderson wrote:

On 2/16/24 10:06, Michal Simek wrote:



On 2/16/24 14:48, Michal Simek wrote:



On 2/15/24 20:31, Sean Anderson wrote:

On 2/15/24 14:08, Michal Simek wrote:



On 2/15/24 18:19, Sean Anderson wrote:

Currently, when we boot from JTAG we try to boot U-Boot from RAM.
However, this is a bit tricky to time, since the debugger has to wait
for SPL to initialize RAM before it can load U-Boot. This can result in
long waits, since occasionally initializing RAM (and other things in
psu_init) takes a long time to complete and the debugger must wait for
this worst case.

Support semihosting if it is enabled, as it lets U-Boot tell the
debugger when we are ready for the image. This means we don't have to
wait any more than necessary. We don't change the default config to
ensure we don't break compatibility with existing debuggers that don't
expect us to hit semihosting breakpoints.

Signed-off-by: Sean Anderson 
---

arch/arm/mach-zynqmp/spl.c | 10 --
1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
index a0f35f36faa..5af735aa5ce 100644
--- a/arch/arm/mach-zynqmp/spl.c
+++ b/arch/arm/mach-zynqmp/spl.c
@@ -9,6 +9,7 @@
#include 
#include 
#include 
+#include 
#include 
#include 

@@ -66,6 +67,11 @@ void spl_board_init(void)
}
#endif

+static u32 jtag_boot_device(void)
+{
+   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
+}
+
void board_boot_order(u32 *spl_boot_list)
{
   spl_boot_list[0] = spl_boot_device();
@@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
   if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
   spl_boot_list[1] = BOOT_DEVICE_MMC1;

-   spl_boot_list[2] = BOOT_DEVICE_RAM;
+   spl_boot_list[2] = jtag_boot_device();
}

u32 spl_boot_device(void)
@@ -97,7 +103,7 @@ u32 spl_boot_device(void)

   switch (bootmode) {
   case JTAG_MODE:
-   return BOOT_DEVICE_RAM;
+   return jtag_boot_device();
#ifdef CONFIG_SPL_MMC
   case SD_MODE1:
   case SD1_LSHFT_MODE: /* not working on silicon v1 */


Good timing. Can you please tell me how to test this? What's the setup?
Which debugger are you using?


I am using OpenOCD with the patches at 
https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2freview.openocd.org%2fc%2fopenocd%2f%2b%2f8133=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-afc15b07b0f91c910f832185958363d84f990a08



I am trying it on the top of the latest git but getting issue with event block 
and no idea how to fix it.

# sudo openocd -f 
/usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_hs3.cfg -f 
/usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg
Open On-Chip Debugger 0.12.0+dev-01509-g6d288937cb2d (2024-02-16-12:22)
Licensed under GNU GPL v2
For bug reports, read
  
https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
Info : auto-selecting first available session transport "jtag". To override use 
'transport select '.
wrong # args: should be "-event  "


Do you know how to fix it?



I actually bisect it and found that it is caused by
jtag: rewrite jim_jtag_configure() as COMMAND_HANDLER
ea2e26f7d521f5755b4bfda7bf12d99650277421


Interesting. I have been testing with 0.12.


# sudo openocd -f 
/usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_smt2_nc.cfg -f 
/usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg


FWIW after installing the udev rules I do not need sudo


Open On-Chip Debugger 0.12.0+dev-01512-g214206ebb972 (2024-02-16-15:38)
Licensed under GNU GPL v2
For bug reports, read
 
https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
none separate
Info : auto-selecting first available session transport "jtag". To override use 
'transport select '.
Info : Hardware thread awareness created
boot_apu
Info : Listening on port  for tcl connections
Info : Listening on port  for telnet connections
Warn : An adapter speed is not selected in the init scripts. OpenOCD will try 
to run the adapter at very low speed (100 kHz).
Warn : To remove this warnings and achieve reasonable communication speed with the target, set 
"adapter speed" or "jtag_rclk" in the init scripts.
Info : clock speed 100 kHz
Info : TAP uscale.tap does not have valid IDCODE (idcode=0x48e70126)
Info : JTAG tap: uscale.ps tap/device found: 0x24738093 (mfg: 0x049 (Xilinx), 
part: 0x4738, ver: 0x2)
Info : JTAG tap: 

Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-16 Thread Sean Anderson
On 2/16/24 11:03, Sean Anderson wrote:
> On 2/16/24 10:06, Michal Simek wrote:
>>
>>
>> On 2/16/24 14:48, Michal Simek wrote:
>>>
>>>
>>> On 2/15/24 20:31, Sean Anderson wrote:
 On 2/15/24 14:08, Michal Simek wrote:
>
>
> On 2/15/24 18:19, Sean Anderson wrote:
>> Currently, when we boot from JTAG we try to boot U-Boot from RAM.
>> However, this is a bit tricky to time, since the debugger has to wait
>> for SPL to initialize RAM before it can load U-Boot. This can result in
>> long waits, since occasionally initializing RAM (and other things in
>> psu_init) takes a long time to complete and the debugger must wait for
>> this worst case.
>>
>> Support semihosting if it is enabled, as it lets U-Boot tell the
>> debugger when we are ready for the image. This means we don't have to
>> wait any more than necessary. We don't change the default config to
>> ensure we don't break compatibility with existing debuggers that don't
>> expect us to hit semihosting breakpoints.
>>
>> Signed-off-by: Sean Anderson 
>> ---
>>
>>arch/arm/mach-zynqmp/spl.c | 10 --
>>1 file changed, 8 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
>> index a0f35f36faa..5af735aa5ce 100644
>> --- a/arch/arm/mach-zynqmp/spl.c
>> +++ b/arch/arm/mach-zynqmp/spl.c
>> @@ -9,6 +9,7 @@
>>#include 
>>#include 
>>#include 
>> +#include 
>>#include 
>>#include 
>>
>> @@ -66,6 +67,11 @@ void spl_board_init(void)
>>}
>>#endif
>>
>> +static u32 jtag_boot_device(void)
>> +{
>> +   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
>> +}
>> +
>>void board_boot_order(u32 *spl_boot_list)
>>{
>>   spl_boot_list[0] = spl_boot_device();
>> @@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
>>   if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
>>   spl_boot_list[1] = BOOT_DEVICE_MMC1;
>>
>> -   spl_boot_list[2] = BOOT_DEVICE_RAM;
>> +   spl_boot_list[2] = jtag_boot_device();
>>}
>>
>>u32 spl_boot_device(void)
>> @@ -97,7 +103,7 @@ u32 spl_boot_device(void)
>>
>>   switch (bootmode) {
>>   case JTAG_MODE:
>> -   return BOOT_DEVICE_RAM;
>> +   return jtag_boot_device();
>>#ifdef CONFIG_SPL_MMC
>>   case SD_MODE1:
>>   case SD1_LSHFT_MODE: /* not working on silicon v1 */
>
> Good timing. Can you please tell me how to test this? What's the setup?
> Which debugger are you using?

 I am using OpenOCD with the patches at 
 https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2freview.openocd.org%2fc%2fopenocd%2f%2b%2f8133=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-afc15b07b0f91c910f832185958363d84f990a08

>>>
>>> I am trying it on the top of the latest git but getting issue with event 
>>> block and no idea how to fix it.
>>>
>>> # sudo openocd -f 
>>> /usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_hs3.cfg -f 
>>> /usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg
>>> Open On-Chip Debugger 0.12.0+dev-01509-g6d288937cb2d (2024-02-16-12:22)
>>> Licensed under GNU GPL v2
>>> For bug reports, read
>>>  
>>> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
>>> Info : auto-selecting first available session transport "jtag". To override 
>>> use 'transport select '.
>>> wrong # args: should be "-event  "
>>>
>>>
>>> Do you know how to fix it?
>>
>>
>> I actually bisect it and found that it is caused by
>> jtag: rewrite jim_jtag_configure() as COMMAND_HANDLER
>> ea2e26f7d521f5755b4bfda7bf12d99650277421
>
> Interesting. I have been testing with 0.12.
>
>> # sudo openocd -f 
>> /usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_smt2_nc.cfg -f 
>> /usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg
>
> FWIW after installing the udev rules I do not need sudo
>
>> Open On-Chip Debugger 0.12.0+dev-01512-g214206ebb972 (2024-02-16-15:38)
>> Licensed under GNU GPL v2
>> For bug reports, read
>> 
>> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
>> none separate
>> Info : auto-selecting first available session transport "jtag". To override 
>> use 'transport select '.
>> Info : Hardware thread awareness created
>> boot_apu
>> Info : Listening on port  for tcl connections
>> 

Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-16 Thread Sean Anderson
On 2/16/24 10:06, Michal Simek wrote:
>
>
> On 2/16/24 14:48, Michal Simek wrote:
>>
>>
>> On 2/15/24 20:31, Sean Anderson wrote:
>>> On 2/15/24 14:08, Michal Simek wrote:


 On 2/15/24 18:19, Sean Anderson wrote:
> Currently, when we boot from JTAG we try to boot U-Boot from RAM.
> However, this is a bit tricky to time, since the debugger has to wait
> for SPL to initialize RAM before it can load U-Boot. This can result in
> long waits, since occasionally initializing RAM (and other things in
> psu_init) takes a long time to complete and the debugger must wait for
> this worst case.
>
> Support semihosting if it is enabled, as it lets U-Boot tell the
> debugger when we are ready for the image. This means we don't have to
> wait any more than necessary. We don't change the default config to
> ensure we don't break compatibility with existing debuggers that don't
> expect us to hit semihosting breakpoints.
>
> Signed-off-by: Sean Anderson 
> ---
>
>arch/arm/mach-zynqmp/spl.c | 10 --
>1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
> index a0f35f36faa..5af735aa5ce 100644
> --- a/arch/arm/mach-zynqmp/spl.c
> +++ b/arch/arm/mach-zynqmp/spl.c
> @@ -9,6 +9,7 @@
>#include 
>#include 
>#include 
> +#include 
>#include 
>#include 
>
> @@ -66,6 +67,11 @@ void spl_board_init(void)
>}
>#endif
>
> +static u32 jtag_boot_device(void)
> +{
> +   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
> +}
> +
>void board_boot_order(u32 *spl_boot_list)
>{
>   spl_boot_list[0] = spl_boot_device();
> @@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
>   if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
>   spl_boot_list[1] = BOOT_DEVICE_MMC1;
>
> -   spl_boot_list[2] = BOOT_DEVICE_RAM;
> +   spl_boot_list[2] = jtag_boot_device();
>}
>
>u32 spl_boot_device(void)
> @@ -97,7 +103,7 @@ u32 spl_boot_device(void)
>
>   switch (bootmode) {
>   case JTAG_MODE:
> -   return BOOT_DEVICE_RAM;
> +   return jtag_boot_device();
>#ifdef CONFIG_SPL_MMC
>   case SD_MODE1:
>   case SD1_LSHFT_MODE: /* not working on silicon v1 */

 Good timing. Can you please tell me how to test this? What's the setup?
 Which debugger are you using?
>>>
>>> I am using OpenOCD with the patches at 
>>> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2freview.openocd.org%2fc%2fopenocd%2f%2b%2f8133=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-afc15b07b0f91c910f832185958363d84f990a08
>>>
>>
>> I am trying it on the top of the latest git but getting issue with event 
>> block and no idea how to fix it.
>>
>> # sudo openocd -f 
>> /usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_hs3.cfg -f 
>> /usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg
>> Open On-Chip Debugger 0.12.0+dev-01509-g6d288937cb2d (2024-02-16-12:22)
>> Licensed under GNU GPL v2
>> For bug reports, read
>>  
>> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
>> Info : auto-selecting first available session transport "jtag". To override 
>> use 'transport select '.
>> wrong # args: should be "-event  "
>>
>>
>> Do you know how to fix it?
>
>
> I actually bisect it and found that it is caused by
> jtag: rewrite jim_jtag_configure() as COMMAND_HANDLER
> ea2e26f7d521f5755b4bfda7bf12d99650277421

Interesting. I have been testing with 0.12.

> # sudo openocd -f 
> /usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_smt2_nc.cfg -f 
> /usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg

FWIW after installing the udev rules I do not need sudo

> Open On-Chip Debugger 0.12.0+dev-01512-g214206ebb972 (2024-02-16-15:38)
> Licensed under GNU GPL v2
> For bug reports, read
> 
> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http%3a%2f%2fopenocd.org%2fdoc%2fdoxygen%2fbugs.html=6e1be473-0b3f-4bc4-a4f0-403592e74baf=d807158c60b7d2502abde8a2fc01f40662980862-f501ab9aa5516ff666e387e53598fd624398f1bc
> none separate
> Info : auto-selecting first available session transport "jtag". To override 
> use 'transport select '.
> Info : Hardware thread awareness created
> boot_apu
> Info : Listening on port  for tcl connections
> Info : Listening on port  for telnet connections
> Warn : An adapter speed is not selected in the init scripts. OpenOCD will try 
> to run the adapter at very 

Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-16 Thread Michal Simek




On 2/16/24 14:48, Michal Simek wrote:



On 2/15/24 20:31, Sean Anderson wrote:

On 2/15/24 14:08, Michal Simek wrote:



On 2/15/24 18:19, Sean Anderson wrote:

Currently, when we boot from JTAG we try to boot U-Boot from RAM.
However, this is a bit tricky to time, since the debugger has to wait
for SPL to initialize RAM before it can load U-Boot. This can result in
long waits, since occasionally initializing RAM (and other things in
psu_init) takes a long time to complete and the debugger must wait for
this worst case.

Support semihosting if it is enabled, as it lets U-Boot tell the
debugger when we are ready for the image. This means we don't have to
wait any more than necessary. We don't change the default config to
ensure we don't break compatibility with existing debuggers that don't
expect us to hit semihosting breakpoints.

Signed-off-by: Sean Anderson 
---

   arch/arm/mach-zynqmp/spl.c | 10 --
   1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
index a0f35f36faa..5af735aa5ce 100644
--- a/arch/arm/mach-zynqmp/spl.c
+++ b/arch/arm/mach-zynqmp/spl.c
@@ -9,6 +9,7 @@
   #include 
   #include 
   #include 
+#include 
   #include 
   #include 

@@ -66,6 +67,11 @@ void spl_board_init(void)
   }
   #endif

+static u32 jtag_boot_device(void)
+{
+   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
+}
+
   void board_boot_order(u32 *spl_boot_list)
   {
  spl_boot_list[0] = spl_boot_device();
@@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
  if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
  spl_boot_list[1] = BOOT_DEVICE_MMC1;

-   spl_boot_list[2] = BOOT_DEVICE_RAM;
+   spl_boot_list[2] = jtag_boot_device();
   }

   u32 spl_boot_device(void)
@@ -97,7 +103,7 @@ u32 spl_boot_device(void)

  switch (bootmode) {
  case JTAG_MODE:
-   return BOOT_DEVICE_RAM;
+   return jtag_boot_device();
   #ifdef CONFIG_SPL_MMC
  case SD_MODE1:
  case SD1_LSHFT_MODE: /* not working on silicon v1 */


Good timing. Can you please tell me how to test this? What's the setup?
Which debugger are you using?


I am using OpenOCD with the patches at 
https://review.openocd.org/c/openocd/+/8133




I am trying it on the top of the latest git but getting issue with event block 
and no idea how to fix it.


# sudo openocd -f 
/usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_hs3.cfg -f 
/usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg

Open On-Chip Debugger 0.12.0+dev-01509-g6d288937cb2d (2024-02-16-12:22)
Licensed under GNU GPL v2
For bug reports, read
 http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 
'transport select '.

wrong # args: should be "-event  "


Do you know how to fix it?



I actually bisect it and found that it is caused by
jtag: rewrite jim_jtag_configure() as COMMAND_HANDLER
ea2e26f7d521f5755b4bfda7bf12d99650277421

# sudo openocd -f 
/usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_smt2_nc.cfg -f 
/usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg

Open On-Chip Debugger 0.12.0+dev-01512-g214206ebb972 (2024-02-16-15:38)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
none separate
Info : auto-selecting first available session transport "jtag". To override use 
'transport select '.

Info : Hardware thread awareness created
boot_apu
Info : Listening on port  for tcl connections
Info : Listening on port  for telnet connections
Warn : An adapter speed is not selected in the init scripts. OpenOCD will try to 
run the adapter at very low speed (100 kHz).
Warn : To remove this warnings and achieve reasonable communication speed with 
the target, set "adapter speed" or "jtag_rclk" in the init scripts.

Info : clock speed 100 kHz
Info : TAP uscale.tap does not have valid IDCODE (idcode=0x48e70126)
Info : JTAG tap: uscale.ps tap/device found: 0x24738093 (mfg: 0x049 (Xilinx), 
part: 0x4738, ver: 0x2)
Info : JTAG tap: uscale.tap tap/device found: 0x5ba00477 (mfg: 0x23b (ARM Ltd), 
part: 0xba00, ver: 0x5)
Info : JTAG tap: uscale.ps tap/device found: 0x24738093 (mfg: 0x049 (Xilinx), 
part: 0x4738, ver: 0x2)

Error: JTAG-DP STICKY ERROR
Error: [uscale.a53.0] Examination failed
Warn : target uscale.a53.0 examination failed
Info : [uscale.axi] Examination succeed
Info : starting gdb server for uscale.a53.0 on 
Info : Listening on port  for gdb connections
Info : gdb port disabled


but with zcu102 I am still not able to connect because error above.
The same behavior with recording SOM IDs I see on kv260 (via hs3 cable).
It looks like that not everything is working for zynqmp.

And no issue with xsdb.

Thanks,
Michal


Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-16 Thread Michal Simek




On 2/15/24 20:31, Sean Anderson wrote:

On 2/15/24 14:08, Michal Simek wrote:



On 2/15/24 18:19, Sean Anderson wrote:

Currently, when we boot from JTAG we try to boot U-Boot from RAM.
However, this is a bit tricky to time, since the debugger has to wait
for SPL to initialize RAM before it can load U-Boot. This can result in
long waits, since occasionally initializing RAM (and other things in
psu_init) takes a long time to complete and the debugger must wait for
this worst case.

Support semihosting if it is enabled, as it lets U-Boot tell the
debugger when we are ready for the image. This means we don't have to
wait any more than necessary. We don't change the default config to
ensure we don't break compatibility with existing debuggers that don't
expect us to hit semihosting breakpoints.

Signed-off-by: Sean Anderson 
---

   arch/arm/mach-zynqmp/spl.c | 10 --
   1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
index a0f35f36faa..5af735aa5ce 100644
--- a/arch/arm/mach-zynqmp/spl.c
+++ b/arch/arm/mach-zynqmp/spl.c
@@ -9,6 +9,7 @@
   #include 
   #include 
   #include 
+#include 
   #include 
   #include 

@@ -66,6 +67,11 @@ void spl_board_init(void)
   }
   #endif

+static u32 jtag_boot_device(void)
+{
+   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
+}
+
   void board_boot_order(u32 *spl_boot_list)
   {
  spl_boot_list[0] = spl_boot_device();
@@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
  if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
  spl_boot_list[1] = BOOT_DEVICE_MMC1;

-   spl_boot_list[2] = BOOT_DEVICE_RAM;
+   spl_boot_list[2] = jtag_boot_device();
   }

   u32 spl_boot_device(void)
@@ -97,7 +103,7 @@ u32 spl_boot_device(void)

  switch (bootmode) {
  case JTAG_MODE:
-   return BOOT_DEVICE_RAM;
+   return jtag_boot_device();
   #ifdef CONFIG_SPL_MMC
  case SD_MODE1:
  case SD1_LSHFT_MODE: /* not working on silicon v1 */


Good timing. Can you please tell me how to test this? What's the setup?
Which debugger are you using?


I am using OpenOCD with the patches at 
https://review.openocd.org/c/openocd/+/8133



I am trying it on the top of the latest git but getting issue with event block 
and no idea how to fix it.


# sudo openocd -f 
/usr/local/share/openocd/scripts/interface/ftdi/digilent_jtag_hs3.cfg -f 
/usr/local/share/openocd/scripts/target/xilinx_zynqmp.cfg

Open On-Chip Debugger 0.12.0+dev-01509-g6d288937cb2d (2024-02-16-12:22)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 
'transport select '.

wrong # args: should be "-event  "


Do you know how to fix it?

Thanks,
Michal



Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-15 Thread Sean Anderson
On 2/15/24 14:31, Sean Anderson wrote:
> On 2/15/24 14:08, Michal Simek wrote:
>>
>>
>> On 2/15/24 18:19, Sean Anderson wrote:
>>> Currently, when we boot from JTAG we try to boot U-Boot from RAM.
>>> However, this is a bit tricky to time, since the debugger has to wait
>>> for SPL to initialize RAM before it can load U-Boot. This can result in
>>> long waits, since occasionally initializing RAM (and other things in
>>> psu_init) takes a long time to complete and the debugger must wait for
>>> this worst case.
>>>
>>> Support semihosting if it is enabled, as it lets U-Boot tell the
>>> debugger when we are ready for the image. This means we don't have to
>>> wait any more than necessary. We don't change the default config to
>>> ensure we don't break compatibility with existing debuggers that don't
>>> expect us to hit semihosting breakpoints.
>>>
>>> Signed-off-by: Sean Anderson 
>>> ---
>>>
>>>   arch/arm/mach-zynqmp/spl.c | 10 --
>>>   1 file changed, 8 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
>>> index a0f35f36faa..5af735aa5ce 100644
>>> --- a/arch/arm/mach-zynqmp/spl.c
>>> +++ b/arch/arm/mach-zynqmp/spl.c
>>> @@ -9,6 +9,7 @@
>>>   #include 
>>>   #include 
>>>   #include 
>>> +#include 
>>>   #include 
>>>   #include 
>>>
>>> @@ -66,6 +67,11 @@ void spl_board_init(void)
>>>   }
>>>   #endif
>>>
>>> +static u32 jtag_boot_device(void)
>>> +{
>>> +   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
>>> +}
>>> +
>>>   void board_boot_order(u32 *spl_boot_list)
>>>   {
>>>  spl_boot_list[0] = spl_boot_device();
>>> @@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
>>>  if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
>>>  spl_boot_list[1] = BOOT_DEVICE_MMC1;
>>>
>>> -   spl_boot_list[2] = BOOT_DEVICE_RAM;
>>> +   spl_boot_list[2] = jtag_boot_device();
>>>   }
>>>
>>>   u32 spl_boot_device(void)
>>> @@ -97,7 +103,7 @@ u32 spl_boot_device(void)
>>>
>>>  switch (bootmode) {
>>>  case JTAG_MODE:
>>> -   return BOOT_DEVICE_RAM;
>>> +   return jtag_boot_device();
>>>   #ifdef CONFIG_SPL_MMC
>>>  case SD_MODE1:
>>>  case SD1_LSHFT_MODE: /* not working on silicon v1 */
>>
>> Good timing. Can you please tell me how to test this? What's the setup?
>> Which debugger are you using?
> 
> I am using OpenOCD with the patches at 
> https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2freview.openocd.org%2fc%2fopenocd%2f%2b%2f8133=819f1021-60b3-42c6-ac85-f327c489da7c=d807158c60b7d2502abde8a2fc01f40662980862-7485d72bf875c6ddb963725debf981fe8dd33731
> 
> My boot flow is
> 
> SPL -> ATF -> U-Boot (no FSBL)
> 
> This allows me to use a FIT which saves some time since I can
> compress the bitstream. Right now I am using
> xilinx_zynqmp_virt_defconfig with the following modifications:
> 
> CONFIG_SYS_LOAD_ADDR=0x3000
> # CONFIG_SPL_OS_BOOT is not set
> CONFIG_SPL_SEMIHOSTING=y
> 
> I also have CONFIG_XILINX_PS_INIT_FILE,
> CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE, and CONFIG_PMUFW_INIT_FILE defined as
> appropriate. I use the following FIT for U-Boot:
> 
> /dts-v1/;
> 
> / {
> description = "U-Boot and ATF";
> #address-cells = <1>;
> 
> images {
> atf {
> description = "Arm Trusted Firmware";
> data = /incbin/("arm-trusted-firmware.bin");
> type = "firmware";
> os = "arm-trusted-firmware";
> arch = "arm64";
> compression = "none";
> load = <0xfffea000>;
> entry = <0xfffea000>;
> };
> 
> fpga {
> description = "PL Bitstream";
> data = /incbin/("system.bit.gz");
> type = "fpga";
> arch = "arm64";
> compression = "gzip";
> load = <0x7c00>;
> compatible = "u-boot,fpga-legacy";
> };
> 
> u-boot {
> description = "U-Boot";
> data = /incbin/("u-boot-nodtb.bin");
> type = "firmware";
> os = "u-boot";
> arch = "arm64";
> compression = "none";
> load = <0x0008>;
> entry = <0x0008>;
> };
> 
> fdt {
> description = "U-Boot FDT";
> data = /incbin/("u-boot.dtb");
> type = "flat_dt";
> arch = "arm64";
> compression = "none";
> hash-1 {
> algo = "crc32";
> };
> };
> };
> 
> configurations {
> default = "conf";
> conf {
> description = "Boot ATF and U-Boot";
> firmware = "atf";
> loadables = "u-boot", "fpga";
> fdt = "fdt";
> };
> };
> };
> 
> Boot output looks like
> 
> U-Boot SPL 2024.01 (Feb 15 2024 - 17:03:10 +)
> Loading new PMUFW cfg obj (1848 bytes)
> PMUFW:  v1.1
> Silicon 

Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-15 Thread Sean Anderson
On 2/15/24 14:08, Michal Simek wrote:
>
>
> On 2/15/24 18:19, Sean Anderson wrote:
>> Currently, when we boot from JTAG we try to boot U-Boot from RAM.
>> However, this is a bit tricky to time, since the debugger has to wait
>> for SPL to initialize RAM before it can load U-Boot. This can result in
>> long waits, since occasionally initializing RAM (and other things in
>> psu_init) takes a long time to complete and the debugger must wait for
>> this worst case.
>>
>> Support semihosting if it is enabled, as it lets U-Boot tell the
>> debugger when we are ready for the image. This means we don't have to
>> wait any more than necessary. We don't change the default config to
>> ensure we don't break compatibility with existing debuggers that don't
>> expect us to hit semihosting breakpoints.
>>
>> Signed-off-by: Sean Anderson 
>> ---
>>
>>   arch/arm/mach-zynqmp/spl.c | 10 --
>>   1 file changed, 8 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
>> index a0f35f36faa..5af735aa5ce 100644
>> --- a/arch/arm/mach-zynqmp/spl.c
>> +++ b/arch/arm/mach-zynqmp/spl.c
>> @@ -9,6 +9,7 @@
>>   #include 
>>   #include 
>>   #include 
>> +#include 
>>   #include 
>>   #include 
>>
>> @@ -66,6 +67,11 @@ void spl_board_init(void)
>>   }
>>   #endif
>>
>> +static u32 jtag_boot_device(void)
>> +{
>> +   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
>> +}
>> +
>>   void board_boot_order(u32 *spl_boot_list)
>>   {
>>  spl_boot_list[0] = spl_boot_device();
>> @@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
>>  if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
>>  spl_boot_list[1] = BOOT_DEVICE_MMC1;
>>
>> -   spl_boot_list[2] = BOOT_DEVICE_RAM;
>> +   spl_boot_list[2] = jtag_boot_device();
>>   }
>>
>>   u32 spl_boot_device(void)
>> @@ -97,7 +103,7 @@ u32 spl_boot_device(void)
>>
>>  switch (bootmode) {
>>  case JTAG_MODE:
>> -   return BOOT_DEVICE_RAM;
>> +   return jtag_boot_device();
>>   #ifdef CONFIG_SPL_MMC
>>  case SD_MODE1:
>>  case SD1_LSHFT_MODE: /* not working on silicon v1 */
>
> Good timing. Can you please tell me how to test this? What's the setup?
> Which debugger are you using?

I am using OpenOCD with the patches at 
https://review.openocd.org/c/openocd/+/8133

My boot flow is

SPL -> ATF -> U-Boot (no FSBL)

This allows me to use a FIT which saves some time since I can
compress the bitstream. Right now I am using
xilinx_zynqmp_virt_defconfig with the following modifications:

CONFIG_SYS_LOAD_ADDR=0x3000
# CONFIG_SPL_OS_BOOT is not set
CONFIG_SPL_SEMIHOSTING=y

I also have CONFIG_XILINX_PS_INIT_FILE,
CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE, and CONFIG_PMUFW_INIT_FILE defined as
appropriate. I use the following FIT for U-Boot:

/dts-v1/;

/ {
description = "U-Boot and ATF";
#address-cells = <1>;

images {
atf {
description = "Arm Trusted Firmware";
data = /incbin/("arm-trusted-firmware.bin");
type = "firmware";
os = "arm-trusted-firmware";
arch = "arm64";
compression = "none";
load = <0xfffea000>;
entry = <0xfffea000>;
};

fpga {
description = "PL Bitstream";
data = /incbin/("system.bit.gz");
type = "fpga";
arch = "arm64";
compression = "gzip";
load = <0x7c00>;
compatible = "u-boot,fpga-legacy";
};

u-boot {
description = "U-Boot";
data = /incbin/("u-boot-nodtb.bin");
type = "firmware";
os = "u-boot";
arch = "arm64";
compression = "none";
load = <0x0008>;
entry = <0x0008>;
};

fdt {
description = "U-Boot FDT";
data = /incbin/("u-boot.dtb");
type = "flat_dt";
arch = "arm64";
compression = "none";
hash-1 {
algo = "crc32";
};
};
};

configurations {
default = "conf";
conf {
description = "Boot ATF and U-Boot";
firmware = "atf";
loadables = "u-boot", "fpga";
fdt = "fdt";
};
};
};

Boot output looks like

U-Boot SPL 2024.01 (Feb 15 2024 - 17:03:10 +)
Loading new PMUFW cfg obj (1848 bytes)
PMUFW:  v1.1
Silicon version:3
EL Level:   EL3
Secure Boot:not authenticated, not encrypted
Multiboot:  0
Trying to boot from MMC1
FPGA image loaded from FIT
NOTICE:  BL31: v2.6(release):xlnx_rebase_v2.6_2022.2
NOTICE:  BL31: Built : 03:55:03, Sep  9 2022

U-Boot 2024.01 (Feb 15 2024 - 17:03:10 +)

CPU:   ZynqMP
Silicon: v3
Chip:  zu4
Board: Xilinx ZynqMP
DRAM:  2 GiB (effective 4 GiB)
PMUFW:  v1.1
EL Level:   EL2
Secure Boot:not authenticated, not encrypted
Core:  67 devices, 29 

Re: [PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-15 Thread Michal Simek




On 2/15/24 18:19, Sean Anderson wrote:

Currently, when we boot from JTAG we try to boot U-Boot from RAM.
However, this is a bit tricky to time, since the debugger has to wait
for SPL to initialize RAM before it can load U-Boot. This can result in
long waits, since occasionally initializing RAM (and other things in
psu_init) takes a long time to complete and the debugger must wait for
this worst case.

Support semihosting if it is enabled, as it lets U-Boot tell the
debugger when we are ready for the image. This means we don't have to
wait any more than necessary. We don't change the default config to
ensure we don't break compatibility with existing debuggers that don't
expect us to hit semihosting breakpoints.

Signed-off-by: Sean Anderson 
---

  arch/arm/mach-zynqmp/spl.c | 10 --
  1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
index a0f35f36faa..5af735aa5ce 100644
--- a/arch/arm/mach-zynqmp/spl.c
+++ b/arch/arm/mach-zynqmp/spl.c
@@ -9,6 +9,7 @@
  #include 
  #include 
  #include 
+#include 
  #include 
  #include 

@@ -66,6 +67,11 @@ void spl_board_init(void)
  }
  #endif

+static u32 jtag_boot_device(void)
+{
+   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
+}
+
  void board_boot_order(u32 *spl_boot_list)
  {
 spl_boot_list[0] = spl_boot_device();
@@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
 if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
 spl_boot_list[1] = BOOT_DEVICE_MMC1;

-   spl_boot_list[2] = BOOT_DEVICE_RAM;
+   spl_boot_list[2] = jtag_boot_device();
  }

  u32 spl_boot_device(void)
@@ -97,7 +103,7 @@ u32 spl_boot_device(void)

 switch (bootmode) {
 case JTAG_MODE:
-   return BOOT_DEVICE_RAM;
+   return jtag_boot_device();
  #ifdef CONFIG_SPL_MMC
 case SD_MODE1:
 case SD1_LSHFT_MODE: /* not working on silicon v1 */


Good timing. Can you please tell me how to test this? What's the setup?
Which debugger are you using?

Also curious if semihosting serial can be used in your setup.

Thanks,
Michal



[PATCH] arm64: zynqmp: Support semhosting boot method

2024-02-15 Thread Sean Anderson
Currently, when we boot from JTAG we try to boot U-Boot from RAM.
However, this is a bit tricky to time, since the debugger has to wait
for SPL to initialize RAM before it can load U-Boot. This can result in
long waits, since occasionally initializing RAM (and other things in
psu_init) takes a long time to complete and the debugger must wait for
this worst case.

Support semihosting if it is enabled, as it lets U-Boot tell the
debugger when we are ready for the image. This means we don't have to
wait any more than necessary. We don't change the default config to
ensure we don't break compatibility with existing debuggers that don't
expect us to hit semihosting breakpoints.

Signed-off-by: Sean Anderson 
---

 arch/arm/mach-zynqmp/spl.c | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-zynqmp/spl.c b/arch/arm/mach-zynqmp/spl.c
index a0f35f36faa..5af735aa5ce 100644
--- a/arch/arm/mach-zynqmp/spl.c
+++ b/arch/arm/mach-zynqmp/spl.c
@@ -9,6 +9,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 

@@ -66,6 +67,11 @@ void spl_board_init(void)
 }
 #endif

+static u32 jtag_boot_device(void)
+{
+   return semihosting_enabled() ? BOOT_DEVICE_SMH : BOOT_DEVICE_RAM;
+}
+
 void board_boot_order(u32 *spl_boot_list)
 {
spl_boot_list[0] = spl_boot_device();
@@ -75,7 +81,7 @@ void board_boot_order(u32 *spl_boot_list)
if (spl_boot_list[0] == BOOT_DEVICE_MMC2)
spl_boot_list[1] = BOOT_DEVICE_MMC1;

-   spl_boot_list[2] = BOOT_DEVICE_RAM;
+   spl_boot_list[2] = jtag_boot_device();
 }

 u32 spl_boot_device(void)
@@ -97,7 +103,7 @@ u32 spl_boot_device(void)

switch (bootmode) {
case JTAG_MODE:
-   return BOOT_DEVICE_RAM;
+   return jtag_boot_device();
 #ifdef CONFIG_SPL_MMC
case SD_MODE1:
case SD1_LSHFT_MODE: /* not working on silicon v1 */
--
2.35.1.1320.gc452695387.dirty


[Embedded World 2024, SECO 
SpA]