Date   

Re: Erasing flash memory problem in nrf52840-dk #flash #nrf52840

Nikos Karamolegkos
 

I solved the issue. The size should be multiple of 4096 (sector size). An other problem that I am facing is that when I run the lwm2m-client over openthread and the last address of the program is 0x591f3 (the first address is 0x0) if I erase a random sector (after the last address) of the memory using pyocd i.e pyocd erase -t nrf52840 --sector 0x64000, I observe that the client loses the connection with the server. Is there any bug or I am missing something? Are any credentials stored somewhere in flash?

Thank you

On 10/16/20 2:20 PM, Nikos Karamolegkos wrote:
Hello, I have made a device DTS overlay file to create my partitions in flash, so I have 3 different partitions (banks) lets say A, B, C respectively. It seems to work. However, each time I am trying to use flash_area_erase to erase the entire bank  (for example delete C bank when running the A bank) I am getting error -22 (EINVAL). I tries to use the function flash_erase but I have the same errors. Also, I tried to erase some bytes (e.g 64) but the error remains. I printed the fa->fa_size and fa->fa_off variables and are correct. Any suggestions?
-- 
Nikos Karamolegkos
R & D engineer at ICS-FORTH
Telecommunications and Networks Lab (TNL)


Re: Testing DTLS with the echo_client and echo_server samples #ble #crypto #nrf52832

Nikos Karamolegkos
 

Does zephyr only supports PSK for the DTLS (e.g echo client, lwm2m client). I haven't seen anything about RPK using ECC. 

On 7/20/20 5:48 PM, Stefan Hristozov wrote:
Hi all,

I want to test DTLS in IPv6 over BLE network.
My set up looks as follows:
                  BLE                                                                     wifi                        wifi
nrf52832 --------------------- Raspberry Pi Border router --------------- WIFI router --------------- PC
2001:db8::1                       2001:db8::2     2001:db9::1                                                  2001:db9::2

1) I compiled the echo_server with:

west build -- -DOVERLAY_CONFIG=overlay-bt.conf

and flashed it on an nrf52832 DK board. The board connects aimlessly with the border router.


2) In another terminal I compiled the echo_client for netive_posix:

west build -b native_posix,

I started the zephyrproject/tools/net-tools/net-setup.sh, and then the native_posix application with:

west build -t run.

3) In another terminal, I started tcpdump listening to the zeht interface. Unfortunately, I cannot see any packets send or received. The console output of the echo_client and echo_servers also does not indicate the something was send or received.

I want to test the sending and receiving of DTLS packets at the nrf52832 board in the three modes:
* Preshared Keys PSK
* Raw Public Keys RPK
* Certificates
I want to secure only UDP over IPv6 (No TCP and no IPv4).

My Questions are:
1) Is the described above procedure correct? I assume something is wrong otherwise I will see some exchanged packets with tcpdump and console output?
2) How to select the DTLS modes PSK/RPK/Certificates?
3) The echo_client and echo_server samples are very complex. Can you point me to a more simple example or describe the procedure for setting up a secured with DTLS UDP communication?

Best regards,
Stefan
-- 
Nikos Karamolegkos
R & D engineer at ICS-FORTH
Telecommunications and Networks Lab (TNL)


Zephyr SDK 0.12.0-beta-1 available for testing

Kumar Gala
 

Hi,

Latest version of the SDK can be found here:

https://github.com/zephyrproject-rtos/sdk-ng/releases/tag/v0.12.0-beta-1

Please download and try things out and report any issues. Please report issues here:

https://github.com/zephyrproject-rtos/sdk-ng/issues

Known issues (these are on the Zephyr side):

* some xtensa platforms may need updating w/regards to Zephyr & Xtensa HAL
[ https://github.com/zephyrproject-rtos/zephyr/pull/23142 ]

* known issue with arm64 and linking C++ & newlib:
[ https://github.com/zephyrproject-rtos/zephyr/issues/28650 ]

Changes since the last release (alpha-1):

• Fix for running SDK on CentOS
• change to install scripts to allow automated install
• RiscV PMP fixes backported from upstream qemu
• Bossa support for SAM4L

- k


Re: NRF52832 and GPIO #gpio #nrf52832

forum.contas@...
 

Ok, found the issue:

 It was do to pin mapping naming.  I was assuming that the pinmaps in Arduino D5, D6, and so on, corresponded to a direct GPIO map, so D5->GPIO_5 and so on... and that's not true.

 After using the correct pin number on Zephyr, it works as it should.
 


Re: NRF52832 and GPIO #gpio #nrf52832

Erik Englund
 

Have you done the initialization by running gpio_pin_configure with GPIO_OUTPUT_ACTIVE as third argument ?

Just to be clear, you´re trying to set pin p0.05 ? That´s located on chip pin7 (QFN48 pkg) ?
Chip pin 5 is routed to p0.03.

Med vänlig hälsning
Erik Englund

Innoware Development AB
Hyttvägen 13
73338 SALA

+46(0)707319440
Org.nr. 556790-2977
www.innoware.se


Re: NRF52832 and GPIO #gpio #nrf52832

forum.contas@...
 

Hi, No MCUBoot.

And yes, the board boots correctly and I can use GDB to debug.

I can see the GPIO driver calls, the values that are set and so on.

My prj.conf file is as simple as it can get: CONFIG_GPIO=y nothing else.

If I flash for example the BT beacon example, it works fine, so  not probably not an issue with the board. I've tried anything more complex, since I'm stuck with the simpler case :)

An example of the debug session:

84                      gpio_pin_set(gpio_dev, led->gpio_pin, 1);
(gdb) s
gpio_pin_set (port=port@entry=0x20000034 <__device_gpio_nrfx_p0>, pin=5 '\005', value=1) at 
/mnt/study/ZephyrRTOS/zephyrproject/zephyr/include/drivers/gpio.h:1005
1005            if (data->invert & (gpio_port_pins_t)BIT(pin)) {
(gdb) s
1006                    value = (value != 0) ? 0 : 1;
(gdb) s
1009            return gpio_pin_set_raw(port, pin, value);
(gdb) s
gpio_pin_set_raw (value=0, pin=<optimized out>, port=0x20000034 <__device_gpio_nrfx_p0>) at /mnt/study/ZephyrRTOS/zephyrproject/zephyr/include/drivers/gpio.h:1009
1009            return gpio_pin_set_raw(port, pin, value);
(gdb) s
z_impl_gpio_port_clear_bits_raw (pins=32, port=0x20000034 <__device_gpio_nrfx_p0>) at 
/mnt/study/ZephyrRTOS/zephyrproject/zephyr/include/drivers/gpio.h:784
784             return api->port_clear_bits_raw(port, pins);
(gdb) p port
$2 = (const struct device *) 0x20000034 <__device_gpio_nrfx_p0>
(gdb) p *port
$3 = {name = 0x3630 "GPIO_0", config = 0x360c <gpio_nrfx_p0_cfg>, api = 0x35e8 <gpio_nrfx_drv_api_funcs>, data = 0x200001bc <gpio_nrfx_p0_data>}
(gdb) p pins
$4 = 32
(gdb) s



Re: NRF52832 and GPIO #gpio #nrf52832

Erik Englund
 

Are you sure that your board boots correctly? ( debug through gdb or just simple serial output )

What version of the SDK are you using?
Is MCUBoot activated in your prj.conf?


NRF52832 and GPIO #gpio #nrf52832

forum.contas@...
 

Not sure if I'm going to have any help on this, but anyway:

I've a standard NRF52832 module that has connected to pin 5 a red LED.

If I flash the module (through JLink) with the Arduino framework, the led blinks without any problem. So there isn't a hardware issue.

Since the module is not a standard supported board, but it's a common supported processor, for using zephyr I've chose a similar board either the nrf52832_mdk or another that uses the same processor, created an overlay file to point the default LED to the correct pin and port (Port 0, pin 5), and flashed the blinky sample example.

It didn't work...

So I've checked several different based NRF52832 boards, checked that there was no pin conflicts on the DTS, only had enabled the CONFIG_GPIO=y on the prj.conf file, but nothing works. Flash it with the Arduino framework for the NRF, the link blinks.

Also flashing, for example the Zephyr BLE beacon example, works without any issue, so it seems I'm missing something crucial on the GPIO front.

I've tested with several different flags, like GPIO_OUTPUT, GPIO_OUTPUT_HIGH and so on, but nothing works.

So... any ideas of what I'm doing wrong, so that this simple GPIO is failing?


Re: missing header file core_cm3.h

Michael E Goldsby
 

Problem solved.
Looks like I neglected to do the export and source commands in  item 1.


Re: API meeting: agenda

Kumar Gala
 

On Oct 20, 2020, at 6:51 AM, Carles Cufi <Carles.Cufi@...> wrote:

Hi all,

Agenda for today.

- workqueue: Introduce delayable work
- PR: https://github.com/zephyrproject-rtos/zephyr/pull/28891

- Add regulator driver infrastructure
- PR: https://github.com/zephyrproject-rtos/zephyr/pull/28977

- Zephyr Bluetooth Authentication - ZEBRA
- PR: https://github.com/zephyrproject-rtos/zephyr/pull/27360

- API to correlate system time with external time sources and translate uptime to wall-clock time
- Issue: https://github.com/zephyrproject-rtos/zephyr/issues/23465

and then, time permitting we'd like to follow-up on pinctrl:

- Pinmux and pinctrl API: Decide what the priorities for this are, and how to get to LTS with it
- Issue: https://github.com/zephyrproject-rtos/zephyr/issues/22748
Just FYI, some of the label & links are mismatched (ie link takes you to one of the other PRs)

- k


missing header file core_cm3.h

Michael E Goldsby
 

 I prepared a build directory as in the docs:

1) In  <pathto>/zephyr-stuff:
    export ZEPHYR_GCC_VARIANT=zephyr
    export ZEPHYR_SDK_INSTALL=~/zephyr-sdk-0.11.3
    source ~/zephyrproject/zephyr/zephyr-env.sh

    mkdir -p  testapp/build/qemu_cortex_m3

2)  put virtually empty main.c in <pathto>/zephyr-stuff/testapp/src:
      #include <zephyr.h>
      #include <sys/printk.h>
      void main(void) {
                printk("In main\n");
      }


3) Put empty prj.conf and CMakeLists.txt containing

  cmake_minimum_required(VERSION 3.13.1)
  find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
  project(collector)
  FILE(GLOB app_sources src/*.c)
  target_sources(app PRIVATE ${app_sources})

into <pathto>/zephyr_stuff/testapp.

4)  In <pathto>/zephyr_stuff/testapp/build/qemu_cortex_m3:
        cmake -DBOARD=qemu_cortex_m3 ../..
and it appears to have completed correctly.

THen when I go to <pathto>/zephyr-stuff/testapp/build/qemu_cortex_m3
and do
    make
or
    make run
it tries to #include <core_cm3.h> and complains that
there is no such file or directory.

Have I left something out?

Thanks for any help you can give me,
--MIke


API meeting: agenda

Carles Cufi
 


ble central repeat read and write to three peripherals error USAGE FAULT #ble

mfinmuch@...
 

Currently I can connect one central to three peripherals
After the connection is established, the corresponding uuid and handle are also found
I use these two functions to read/write
bt_gatt_write(bt_conn_lookup_index(conn_index), &write_params);
bt_gatt_read(bt_conn_lookup_index(conn_index), &read_params);
conn_idex is the value I entered by myself, it seems I want to connect to the number (if I want to write/read to three peripherals in sequence, fill in 0,1,2 in sequence)

But when central sent read/write to peripheral and ran for one round, the following error occurred when it was about to run the second round
```
[00:00:06.042,266] os: ***** USAGE FAULT *****
[00:00:06.042,297] os: Illegal use of the EPSR
[00:00:06.042,297] os: r0/a1: 0x20000218 r1/a2: 0x00000001 r2/a3: 0x200016fc
[00:00:06.042,297] os: r3/a4: 0x00000000 r12/ip: 0x0000cfe9 r14/lr: 0x0000de87
[00:00:06.042,297] os: xpsr: 0x20000000
[00:00:06.042,297] os: Faulting instruction address (r15/pc): 0x00000000
[00:00:06.042,327] os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
[00:00:06.042,327] os: Current thread: 0x200013f0 (unknown)
[00:00:06.780,883] os: Halting system
```
How can I remove this error?
Is there a problem with the bt_conn_lookup_index I quoted in bt_gatt_write/read?
What to do to make one central communicate with multiple peripherals?

Environment:

  • Zephyr 2.4.0
  • zephyr-sdk-0.11.3
  • nrf52840


Confirming that USB OTG Host mode not in the works #usb #otg

carlos.rodriguez@...
 

Hi all:

Just wanted to see if anyone can confirm that we shouldn't expect USB Host mode support in 2.5.0, and that it's not in the works.  I found an old issue from May 19th that seems to indicate that is the case (https://github.com/zephyrproject-rtos/zephyr/issues/25442).  I have been scouring through the PRs since then and it doesn't look like anything related to that functionality has been committed.

Thanks in advance.


Erasing flash memory problem in nrf52840-dk #flash #nrf52840

Nikos Karamolegkos
 

Hello, I have made a device DTS overlay file to create my partitions in flash, so I have 3 different partitions (banks) lets say A, B, C respectively. It seems to work. However, each time I am trying to use flash_area_erase to erase the entire bank  (for example delete C bank when running the A bank) I am getting error -22 (EINVAL). I tries to use the function flash_erase but I have the same errors. Also, I tried to erase some bytes (e.g 64) but the error remains. I printed the fa->fa_size and fa->fa_off variables and are correct. Any suggestions?


introducing new delayable work API

Peter A. Bigot
 

I've been asked to request input on "kernel: workq: introduce delayable work" (#28891), which introduces a new API for supporting delayable work queue submission that cleans up some of the difficulty with correctly using the existing delayed work API.

"cleanup of work queue APIs and behavior" (#28579) (already merged) documented the problems with the existing API and states an intent that it be deprecated.  The problems with that API are not in dispute, only whether existing use in-tree meets the fairly strict requirements necessary for it to behave in a predictable matter.  For the cases I looked at it's not clear that they do.

The existing version of #28891 includes some deprecation commits intended as examples and verification.  These are intended as demonstration, and if there are concerns they don't meet the specific needs of those uses will be extracted and submitted as new PRs when the core functionality is integrated.

Please provide feedback on issue 28891 on github.

Peter


BLE one central_hr connect two peripherals #ble

mfinmuch@...
 

I am using zephyr 2.4.99 to develop a BLE program
Currently, I used central_hr and peripheral in the sample to load separately on two nrf52840s
Now the two boards can communicate with each other, can read and write
But now I want a central_hr to connect to more than two peripherals, but when I loaded the peripheral to the third board, my central_hr could not be connected to the second peripheral
In addition, I also added CONFIG_BT_MAX_CONN=3 in prj.conf, but it still doesn’t work.
I started_sacn() again after finding the UUID
However, after scanning, it will be found that the handles of the two peripherals are the same, and the central request will cause conflicts when reading, so how do you distinguish when the central wants to read data from one of them?
Or is there a sample program for one central to multiple peripherals?

Thanks,
Poyi Lin


Store DTLS credentials independent to the binary #networking #flash #dtls #nrf52480

Nikos Karamolegkos
 

Hello everybody, I would like to ask you if it is safe to use these functions in order to store and get DTLS credentials on the device? I would like to make over the air update so I would like the transmitted binary to be independent of the DTLS credentials. An other idea may be to create a different partition for the credentials. What are your thoughts?

Thank you


Nordic 52840 as client Exchange MTU Request Not Supported

Eric Cooper <ericcooper2005@...>
 

Hi Zephyr Team, I am relative newby to BLE and Zephyr so forgive me if I am missing something obvious.

I have a 52840 with the Zephyr firmware acting a client communicating with a Nordic device.

If the device sends an Exchange MTU (for 247) a btmon trace shows a response of Request Not Supported (and could this be a bluez issue?). In the same setup if the client then sends an Exchange MTU Request it appears to be successfully acknowledged but going forward the data is sent from the device in 23 byte MTUs as opposed to the preferred 247.

If the device does not send an Exchange MTU request and the client side sends the Exchange MTU request the device does properly use the larger MTU.

So two issues:
. the client does not support Exchange MTU request (Zephyr or bluez issue?)
. given a rejected Exchange MTU request from the device (server) and an accepted MTU from the client to the device the full MTU size is not utilized. And as I think about it this could be an issue on the device.

A trace is at the end of this email.

Thanks in advance and please let know if there is more information I can provide.

Eric


@ RAW Open: gatttool version 2.22                                                                                                                                        {0x0003} 506.381902
@ RAW Close: gatttool                                                                                                                                                    {0x0003} 506.381912
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7                                                                                                             #19 [hci0] 506.381948
        Type: Passive (0x00)
        Interval: 60.000 msec (0x0060)
        Window: 30.000 msec (0x0030)
        Own address type: Random (0x01)
        Filter policy: Ignore not in white list (0x01)
> HCI Event: Command Complete (0x0e) plen 4                                                                                                                            #20 [hci0] 506.382783
      LE Set Scan Parameters (0x08|0x000b) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2                                                                                                                 #21 [hci0] 506.382794
        Scanning: Enabled (0x01)
        Filter duplicates: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4                                                                                                                            #22 [hci0] 506.383779
      LE Set Scan Enable (0x08|0x000c) ncmd 1
        Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 42                                                                                                                              #23 [hci0] 506.808920
      LE Advertising Report (0x02)
        Num reports: 1
        Event type: Connectable undirected - ADV_IND (0x00)
        Address type: Random (0x01)
        Address: E0:8E:4B:E4:9D:3E (Static)
        Data length: 30
        Flags: 0x06
          LE General Discoverable Mode
          BR/EDR Not Supported
        128-bit Service UUIDs (complete): 1 entry
          Vendor specific (00001523-1212-efde-1523-785feabcd123)
        Name (complete): B8_1777
        RSSI: -41 dBm (0xd7)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2                                                                                                                 #24 [hci0] 506.808935
        Scanning: Disabled (0x00)
        Filter duplicates: Disabled (0x00)
> HCI Event: Command Complete (0x0e) plen 4                                                                                                                            #25 [hci0] 506.809779
      LE Set Scan Enable (0x08|0x000c) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Create Connection (0x08|0x000d) plen 25                                                                                                              #26 [hci0] 506.809785
        Scan interval: 60.000 msec (0x0060)
        Scan window: 60.000 msec (0x0060)
        Filter policy: White list is not used (0x00)
        Peer address type: Random (0x01)
        Peer address: E0:8E:4B:E4:9D:3E (Static)
        Own address type: Random (0x01)
        Min connection interval: 30.00 msec (0x0018)
        Max connection interval: 50.00 msec (0x0028)
        Connection latency: 0 (0x0000)
        Supervision timeout: 420 msec (0x002a)
        Min connection length: 0.000 msec (0x0000)
        Max connection length: 0.000 msec (0x0000)
> HCI Event: Command Status (0x0f) plen 4                                                                                                                              #27 [hci0] 506.811778
      LE Create Connection (0x08|0x000d) ncmd 1
        Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 19                                                                                                                              #28 [hci0] 506.997999
      LE Connection Complete (0x01)
        Status: Success (0x00)
        Handle: 0
        Role: Master (0x00)
        Peer address type: Random (0x01)
        Peer address: E0:8E:4B:E4:9D:3E (Static)
        Connection interval: 50.00 msec (0x0028)
        Connection latency: 0 (0x0000)
        Supervision timeout: 420 msec (0x002a)
        Master clock accuracy: 0x07
@ MGMT Event: Device Connected (0x000b) plen 43                                                                                                                   {0x0002} [hci0] 506.998012
        LE Address: E0:8E:4B:E4:9D:3E (Static)
        Flags: 0x00000000
        Data length: 30
        Flags: 0x06
          LE General Discoverable Mode
          BR/EDR Not Supported
        128-bit Service UUIDs (complete): 1 entry
          Vendor specific (00001523-1212-efde-1523-785feabcd123)
        Name (complete): B8_1777
@ MGMT Event: Device Connected (0x000b) plen 43                                                                                                                   {0x0001} [hci0] 506.998012
        LE Address: E0:8E:4B:E4:9D:3E (Static)
        Flags: 0x00000000
        Data length: 30
        Flags: 0x06
          LE General Discoverable Mode
          BR/EDR Not Supported
        128-bit Service UUIDs (complete): 1 entry
          Vendor specific (00001523-1212-efde-1523-785feabcd123)
        Name (complete): B8_1777
< HCI Command: LE Read Remote Used Features (0x08|0x0016) plen 2                                                                                                       #29 [hci0] 506.998070
        Handle: 0
> HCI Event: LE Meta Event (0x3e) plen 4                                                                                                                               #30 [hci0] 506.998125
      LE Channel Selection Algorithm (0x14)
        Handle: 0
        Algorithm: #2 (0x01)
> HCI Event: Command Status (0x0f) plen 4                                                                                                                              #31 [hci0] 506.998800
      LE Read Remote Used Features (0x08|0x0016) ncmd 1
        Status: Success (0x00)



> ACL Data RX: Handle 0 flags 0x02 dlen 7                                                                                                                              #32 [hci0] 506.999954
      ATT: Exchange MTU Request (0x02) len 2
        Client RX MTU: 247
> HCI Event: LE Meta Event (0x3e) plen 11                                                                                                                              #33 [hci0] 507.098804
      LE Data Length Change (0x07)
        Handle: 0
        Max TX octets: 251
        Max TX time: 2120
        Max RX octets: 251
        Max RX time: 2120
> HCI Event: LE Meta Event (0x3e) plen 12                                                                                                                              #34 [hci0] 507.150804
      LE Read Remote Used Features (0x04)
        Status: Success (0x00)
        Handle: 0
        Features: 0x25 0x41 0x00 0x00 0x00 0x00 0x00 0x00
          LE Encryption
          Extended Reject Indication
          LE Data Packet Length Extension
          LE 2M PHY
          Channel Selection Algorithm #2
< ACL Data TX: Handle 0 flags 0x00 dlen 9                                                                                                                              #35 [hci0] 507.150967
      ATT: Error Response (0x01) len 4
        Exchange MTU Request (0x02)
        Handle: 0x0000
        Error: Request Not Supported (0x06)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                 #36 [hci0] 507.199876
        Num handles: 1
        Handle: 0
        Count: 1



< ACL Data TX: Handle 0 flags 0x00 dlen 7                                                                                                                              #37 [hci0] 507.202314
      ATT: Exchange MTU Request (0x02) len 2
        Client RX MTU: 512
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                 #38 [hci0] 507.249913
        Num handles: 1
        Handle: 0
        Count: 1
> ACL Data RX: Handle 0 flags 0x02 dlen 7                                                                                                                              #39 [hci0] 507.300798
      ATT: Exchange MTU Response (0x03) len 2
        Server RX MTU: 247
< ACL Data TX: Handle 0 flags 0x00 dlen 11                                                                                                                             



#40 [hci0] 507.351938
      ATT: Read By Type Request (0x08) len 6
        Handle range: 0x0001-0xffff
        Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                 #41 [hci0] 507.399916
        Num handles: 1
        Handle: 0
        Count: 1
> ACL Data RX: Handle 0 flags 0x02 dlen 27                                                                                                                             #42 [hci0] 507.450802
      ATT: Read By Type Response (0x09) len 22
        Attribute data length: 7
        Attribute data list: 3 entries
        Handle: 0x0002
        Value: 0a0300002a
        Handle: 0x0004
        Value: 020500012a
        Handle: 0x0006
        Value: 020700042a
< ACL Data TX: Handle 0 flags 0x00 dlen 11                                                                                                                             #43 [hci0] 507.450883
      ATT: Read By Type Request (0x08) len 6
        Handle range: 0x0007-0xffff
        Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                 #44 [hci0] 507.499912
        Num handles: 1
        Handle: 0
        Count: 1
> ACL Data RX: Handle 0 flags 0x02 dlen 13                                                                                                                             #45 [hci0] 507.550832
      ATT: Read By Type Response (0x09) len 8
        Attribute data length: 7
        Attribute data list: 1 entry
        Handle: 0x0008
        Value: 020900a62a
< ACL Data TX: Handle 0 flags 0x00 dlen 11                                                                                                                             #46 [hci0] 507.550914
      ATT: Read By Type Request (0x08) len 6
        Handle range: 0x0009-0xffff
        Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                 #47 [hci0] 507.599915
        Num handles: 1
        Handle: 0
        Count: 1
> ACL Data RX: Handle 0 flags 0x02 dlen 27                                                                                                                             #48 [hci0] 507.650831
      ATT: Read By Type Response (0x09) len 22
        Attribute data length: 21
        Attribute data list: 1 entry
        Handle: 0x000c
        Value: 180d0023d1bcea5f782315deef121224150000
< ACL Data TX: Handle 0 flags 0x00 dlen 11                                                                                                                             #49 [hci0] 507.650913
      ATT: Read By Type Request (0x08) len 6
        Handle range: 0x000d-0xffff
        Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                 #50 [hci0] 507.749874
        Num handles: 1
        Handle: 0
        Count: 1
> ACL Data RX: Handle 0 flags 0x02 dlen 27                                                                                                                             #51 [hci0] 507.750989
      ATT: Read By Type Response (0x09) len 22
        Attribute data length: 21
        Attribute data list: 1 entry
        Handle: 0x000f
        Value: 38100023d1bcea5f782315deef121225150000
< ACL Data TX: Handle 0 flags 0x00 dlen 11                                                                                                                             #52 [hci0] 507.751051
      ATT: Read By Type Request (0x08) len 6
        Handle range: 0x0010-0xffff
        Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5                                                                                                                 #53 [hci0] 507.799910
        Num handles: 1
        Handle: 0
        Count: 1
> ACL Data RX: Handle 0 flags 0x02 dlen 27      


ESP32 Dual core - getting started

Lawrence King
 

Dear All:

 

I have started a new project based on ESP32.

 

To start I wrote boards files for the ESP32-CAM board  and defined a single LED as a peripheral. I was able to compile the blinky sample, flash it to the board and have it start up at board power on. Great!  I should mention that the ESP32-CAM board is a single core ESP32, and download is over the serial UART.

 

Now moving on to bigger and better things, I received a ESP32-WROVER-KIT board. This board has UART and JTAG debug on board and a dual-core CPU. I created a boards file(s) for this board (similar to the ESP32-CAM dts). I managed to get the esp variant of openOCD setup, it seems to download code to the board over JTAG correctly. Unfortunately when I reset the board it doesn’t run my Blinky code, it runs whatever was programmed in the board when I got it.

 

I think I have two issues, 1) which core is zephyr supposed to run on (cpu0 or cpu1), and 2) what address should the code be loaded to so that it will start at boot time?.

 

Here is the output of “west -v flash”:

 

-- west flash: using runner openocd

runners.openocd: /usr/local/bin/openocd -f board/esp32-wrover-kit-3.3v.cfg -c init -c targets -c 'reset halt' -c 'load_image /home/lawrence/workspace/cradle/build/zephyr/zephyr.elf' -c 'resume 0x00000000400807b4' -c shutdown

Open On-Chip Debugger  v0.10.0-esp32-20200526-33-gadc5c3ff-dirty (2020-10-09-17:36)

Licensed under GNU GPL v2

For bug reports, read

      http://openocd.org/doc/doxygen/bugs.html

Info : FreeRTOS creation

Info : FreeRTOS creation

Info : ftdi: if you experience problems at higher adapter clocks, try the command "ftdi_tdo_sample_edge falling"

Info : clock speed 20000 kHz

Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)

Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)

Info : esp32.cpu0: Debug controller was reset.

Info : esp32.cpu0: Core was reset.

Info : esp32.cpu1: Debug controller was reset.

Info : esp32.cpu1: Core was reset.

Info : Listening on port 3333 for gdb connections

    TargetName         Type       Endian TapName            State      

--  ------------------ ---------- ------ ------------------ ------------

0  esp32.cpu0         esp32      little esp32.cpu0         running

1* esp32.cpu1         esp32      little esp32.cpu1         running

 

Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)

Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)

Info : esp32.cpu0: Target halted, PC=0x400D5614, debug_reason=00000000

Info : Set GDB target to 'esp32.cpu0'

Info : esp32.cpu1: Target halted, PC=0x400D1AA6, debug_reason=00000000

Info : esp32.cpu0: Debug controller was reset.

Info : esp32.cpu0: Core was reset.

Info : esp32.cpu0: Target halted, PC=0x500000CF, debug_reason=00000000

Info : esp32.cpu0: Core was reset.

Info : esp32.cpu0: Target halted, PC=0x40000400, debug_reason=00000000

Info : esp32.cpu1: Debug controller was reset.

Info : esp32.cpu1: Core was reset.

Info : esp32.cpu1: Target halted, PC=0x40000400, debug_reason=00000000

14854 bytes written at address 0x40080000

920 bytes written at address 0x3ffb0000

downloaded 15774 bytes in 0.096819s (159.104 KiB/s)

 

shutdown command invoked

 

It looks like it wrote Zephyr to the chip (at address 0x40080000), and scribbled something at 0x3ffb0000. But when I restart the board the blinky code doesn’t run.

 

The serial terminal output shows it startes something else:

 

rst:0x1 (POWERON_RESET),boot:0x1e (SPI_FAST_FLASH_BOOT)

configsip: 0, SPIWP:0xee

clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00

mode:DIO, clock div:2

load:0x3fff0018,len:4

load:0x3fff001c,len:5984

ho 0 tail 12 room 4

load:0x40078000,len:0

load:0x40078000,len:15720

entry 0x4007901c

I (30) boot: ESP-IDF v3.1-dev-789-g0c58f11 2nd stage bootloader

I (30) boot: compile time 20:13:08

I (31) boot: Enabling RNG early entropy source...

I (36) qio_mode: Enabling default flash chip QIO

I (41) boot: SPI Speed      : 40MHz

I (45) boot: SPI Mode       : QIO

I (49) boot: SPI Flash Size : 2MB

I (54) boot: Partition Table:

I (57) boot: ## Label            Usage          Type ST Offset   Length

I (64) boot:  0 nvs              WiFi data        01 02 00009000 00006000

I (72) boot:  1 phy_init         RF data          01 01 0000f000 00001000

I (79) boot:  2 factory          factory app      00 00 00010000 00100000

I (87) boot: End of partition table

I (91) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x1d36c (119660) map

I (135) esp_image: segment 1: paddr=0x0002d394 vaddr=0x3ffb0000 size=0x025c0 (  9664) load

I (139) esp_image: segment 2: paddr=0x0002f95c vaddr=0x40080000 size=0x00400 (  1024) load

I (143) esp_image: segment 3: paddr=0x0002fd64 vaddr=0x40080400 size=0x002ac (   684) load

I (151) esp_image: segment 4: paddr=0x00030018 vaddr=0x400d0018 size=0x1a354 (107348) map

I (192) esp_image: segment 5: paddr=0x0004a374 vaddr=0x400806ac size=0x0d73c ( 55100) load

I (212) esp_image: segment 6: paddr=0x00057ab8 vaddr=0x400c0000 size=0x00000 (     0) load

I (221) boot: Loaded app from partition at offset 0x10000

I (221) boot: Disabling RNG early entropy source...

I (223) spiram: SPI RAM mode: flash 40m sram 40m

I (227) spiram: PSRAM initialized, cache is in low/high (2-core) mode.

I (234) cpu_start: Pro cpu up.

I (238) cpu_start: Starting app cpu, entry point is 0x4008111c

I (0) cpu_start: App cpu up.

I (1136) spiram: SPI SRAM memory test OK

I (1136) heap_init: Initializing. RAM available for dynamic allocation:

I (1137) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM

I (1143) heap_init: At 3FFB3368 len 0002CC98 (179 KiB): DRAM

I (1149) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM

I (1156) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM

I (1162) heap_init: At 4008DDE8 len 00012218 (72 KiB): IRAM

I (1168) cpu_start: Pro cpu start user code

I (1173) spiram: Adding pool of 4096K of external SPI memory to heap allocator

I (1181) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations

I (196) cpu_start: Starting scheduler on PRO CPU.

I (0) cpu_start: Starting scheduler on APP CPU.

I (0) gpio: GPIO[0]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0

I (0) gpio: GPIO[2]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0

I (10) gpio: GPIO[4]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0

light init

LCD ID: 00000000

ILI9341 detected.

LCD ILI9341 initialization.

 

I suspect I set something up incorrectly, but what?

 

Lawrence King

Principal Developer

Connected Transport Market Unit

https://www.Irdeto.com

+1(416)627-7302

 

1  2 - linkedin  3 - instagram  4 - youtube  6 - facebook  7

            

CONFIDENTIAL: This e-mail and any attachments are confidential and intended solely for the use of the individual(s) to whom it is addressed. It can contain proprietary confidential information and be subject to legal privilege and/or subject to a non-disclosure Agreement. Unauthorized use, disclosure or copying is strictly prohibited. If you are not the/an addressee and are in possession of this e-mail, please delete the message and notify us immediately. Please consider the environment before printing this e-mail. Thank you.

 

 

 

821 - 840 of 3111