NCS project occured error when running

After I flash my code,I get imformations as follow:

*** Booting nRF Connect SDK v3.5.99-ncs1 *** ***引导nRF Connect SDK v3.5.99-ncs1 ******引导nRF Connect SDK v3.5.99-ncs1 ******引导nRF Connect SDK v3.5.99-ncs1 ******引导nRF Connect SDK v3.5.99-ncs1 ***

1202 Start 1202年开始 1202年开始 1202年开始 1202年开始

I: 6 Sectors of 4096 bytes I: 6个扇区,4096字节I: 6个扇区,4096字节I: 6个扇区,4096字节I: 6个扇区,4096字节

I: alloc wra: 0, fb8 I:分配 wra:0,fb8 I:分配 wra:0,fb8 I:分配 wra:0,fb8 I:分配 wra:0,fb8

I: data wra: 0, 30

I: SoftDevice Controller build revision:  I: SoftDevice Controller build版本:I: SoftDevice Controller build版本:I: SoftDevice Controller build版本:I: SoftDevice Controller build版本:

I: 36 f0 e5 0e 87 68 48 fb |6....hH. I: 36 f0 e5 0e 87 68 48 fb |6....hH。I: 36 f0 e5 0e 87 68 48 fb |6....hH。I: 36 f0 e5 0e 87 68 48 fb |6....hH。I: 36 f0 e5 0e 87 68 48 fb |6....hH。

I: 02 fd 9f 82 cc 32 e5 7b |.....2.{

*** Booting nRF Connect SDK v3.5.99-ncs1 ***
1202 Start
I: 6 Sectors of 4096 bytes
I: alloc wra: 0, fb8
I: data wra: 0, 30
I: SoftDevice Controller build revision: 
I: 36 f0 e5 0e 87 68 48 fb |6....hH.
I: 02 fd 9f 82 cc 32 e5 7b |.....2.{
I: 91 b1 5c ed             |..\.    
I: HW Platform: Nordic Semiconductor (0x0002)
I: HW Variant: nRF52x (0x0002)
I: Firmware: Standard Bluetooth controller (0x00) Version 54.58864 Build 1214809870
I: No ID address. App must call settings_load()
I: Identity: EC:41:5C:CB:1E:AD (random)
I: HCI: version 5.4 (0x0d) revision 0x118f, manufacturer 0x0059
I: LMP: version 5.4 (0x0d) subver 0x118f
* buffer overflow detected *
E: r0/a1:  0x00000002  r1/a2:  0x2000d200  r2/a3:  0x00000001
E: r3/a4:  0x0004ab91 r12/ip:  0x00000000 r14/lr:  0x000297b9
E:  xpsr:  0x61000000
E: s[ 0]:  0x00000008  s[ 1]:  0x00000000  s[ 2]:  0x00000000  s[ 3]:  0x00025a87
E: s[ 4]:  0x00020000  s[ 5]:  0x00025a49  s[ 6]:  0x00000000  s[ 7]:  0x00000000
E: s[ 8]:  0x00000041  s[ 9]:  0x0003ff59  s[10]:  0x000000cb  s[11]:  0x2000d2b4
E: s[12]:  0x000000ad  s[13]:  0x000297b9  s[14]:  0x0004ab74  s[15]:  0x2000d2dc
E: fpscr:  0x00000000
E: Faulting instruction address (r15/pc): 0x000297c4
E: >>> ZEPHYR FATAL ERROR 2: Stack overflow on CPU 0
E: Current thread: 0x20007d38 (main)
E: Resetting system

I can not understand it.Maybe about settings_load()?

The main function in my code as follow:

int main(void) int主要(空白)

{

  int err; int犯错;

  uint32_t blink_status = 0;

  struct dm_init_param init_param; struct dm_init_param;struct dm_init_param;

 

  printk("1202 Start\n"); printk(“1202年开始\ n”); printk(“1202年开始\ n”);

 

  err = dk_leds_init(); 错误 = dk_leds_init(); 错误 = dk_leds_init();

  if (err) {

 printk("LEDs init failed (err %d)\n", err); printk(" led init failed (err %d)\n", err);printk(" led init failed (err %d)\n", err);

 return 0; 返回0; 返回0;

  }

 

  err = peer_init();

int main(void)
{
	int err;
	uint32_t blink_status = 0;
	struct dm_init_param init_param;

	printk("1202 Start\n");

	err = dk_leds_init();
	if (err) {
		printk("LEDs init failed (err %d)\n", err);
		return 0;
	}

	err = peer_init();
	if (err) {
		printk("Peer init failed (err %d)\n", err);
		return 0;
	}

	init_param.cb = &dm_cb;

	err = dm_init(&init_param);
	if (err) {
		printk("Distance measurement init failed (err %d)\n", err);
		return 0;
	}

	err = service_ddfs_init();
	if (err) {
		printk("DDF Service init failed (err %d)\n", err);
		return 0;
	}

	err = bt_enable(NULL);
	if (err) {
		printk("Bluetooth init failed (err %d)\n", err);
		return 0;
	}

	if (IS_ENABLED(CONFIG_SETTINGS)) {
		settings_load();
	}

	char *name = namecat();
	err = bt_set_name(name);
	if (err)
	{
		printk("Name set failed (err %d)\n",err);
		return 0;
	}
	

	err = bt_sync_init();
	if (err) {
		printk("Synchronisation init failed (err %d)\n", err);
		return 0;
	}

	for (;;) {
		dk_set_led(RUN_STATUS_LED, (++blink_status) % 2);
		k_sleep(K_MSEC(RUN_LED_BLINK_INTERVAL));
		service_azimuth_elevation_simulation();
	}
}

  • char * namecat(void)

    {

      bt_addr_le_t addr;

      char addrchar[BT_ADDR_LE_STR_LEN]; 查尔·阿德查尔[BT_ADDR_LE_STR_LEN];查尔·阿德查尔[BT_ADDR_LE_STR_LEN];查尔·阿德查尔[BT_ADDR_LE_STR_LEN];

      size_t count = CONFIG_BT_ID_MAX;

      bt_id_get(&addr,&count); bt_id_get (addr,数); bt_id_get (addr,数); bt_id_get (addr,数);

      bt_addr_le_to_str(&addr, addrchar, sizeof(addrchar)); bt_addr_le_to_str(&addr, addrchar, sizeof(addrchar));bt_addr_le_to_str(&addr, addrchar, sizeof(addrchar));

      /******************************/

    char * namecat(void)
    {
    	bt_addr_le_t addr;
    	char addrchar[BT_ADDR_LE_STR_LEN];
    	size_t count = CONFIG_BT_ID_MAX;
    	bt_id_get(&addr,&count);
    	bt_addr_le_to_str(&addr, addrchar, sizeof(addrchar));
    	/******************************/
    	static char name[18] = DEVICE_NAME;
    	char addr_name[4];
    	addr_name[0] = addrchar[15];
    	addr_name[1] = addrchar[16];
    	addr_name[2] = addrchar[12];
    	addr_name[3] = addrchar[13];
    	strcat(name,addr_name);
    	name[18] = '\0';
    	return name;
    }

  • Thanks. The error suggests that your 'name' array is too small to hold the concatenated name. I don't know the length of your DEVICE_NAME string, but do you see the same issue if you increase the array to, let's say, 30 bytes instead of 18?

  • Thanks,it seem the length short due to the issue.But there still a little problem that the length of string is default plus one to accommodate a finish flag '\0'?The follow string display char[15] when my mouse stop over it.

    #define DEVICE_NAME             "Anny_AutoDoor_"

  • Yes, the string will be terminated with null, so the size of the array will be the number of characters + the '\0' character.

Related