Error l6031u could not open scatter description file

After importing a Keil MDK v5.25 Project (for Nordic nRF52832) and then trying to build the 'External' configuration. In fact, there were a couple of other failures: 1. The path to the CMSIS headers - core_cm4.h etc - was not added; 2. The --c99 option…

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • 1

    After importing a Keil MDK v5.25 Project (for Nordic nRF52832) and then trying to build the ‘External’ configuration.

    In fact, there were a couple of other failures:

    1. The path to the CMSIS headers — core_cm4.h etc — was not added;
    2. The —c99 option was not added.

    But, having fixed them, I am stuck with the Link failing:

    The Linker wrote:

    L6031U: Could not open scatter description file $(RelLinkerScriptPath): No such file or directory

    So 2 questions:

    1. Where can I see what RelLinkerScriptPath is actually set to?
    2. How can I edit that to correct it?

    Help > About wrote:

    SEGGER Embedded Studio for ARM
    Release 3.40 Build 2018052200.36079
    Windows x64

    © 2014-2018 SEGGER Microcontroller GmbH
    © 1997-2018 Rowley Associates Ltd.

    GCC/BINUTILS: Built using the GNU ARM Embedded Toolchain version 7-2017-q4-major source distribution

    Clang/LLVM: Built using the version 6.0.0 source distributio

    • 2

    The Scatter file does exist — in the same place that the original Keil project used it.

    • 3

    If I do ‘Open Solution in Editor’, I see:

    external_link_command=»»$(KEIL_TOOLKIT_DIR)/ARMCC/bin/armlink» $(LinkOptions) —scatter=»$(RelLinkerScriptPath)» $(Objects) -o «$(RelTargetPath)» —list «$(RelMapPath)» —map»

    In the build output, I see:

    Linking ‘nrf52832_xxaa.axf’

    C:/bin/Keil/MDK/525/ARM/ARMCC/bin/armlink —cpu cortex-m4 —fpu fpv4-sp —diag_suppress 6330 —scatter=$(RelLinkerScriptPath) ./_build/main.o ./_build/host_comms.o ./_build/peripherals.o ./_build/timestamp.o ./_build/persist.o ./_build/boards.o ./_build/bsp.o ./_build/bsp_btn_ble.o ./_build/ble_advdata.o ./_build/ble_db_discovery.o ./_build/ble_srv_common.o ./_build/nrf_ble_gatt.o ./_build/ble_conn_state.o ./_build/ble_nus_c.o ./_build/nrf_drv_clock.o ./_build/nrf_drv_uart.o ./_build/nrfx_clock.o ./_build/nrfx_gpiote.o ./_build/nrfx_power_clock.o ./_build/nrfx_prs.o ./_build/nrfx_uart.o ./_build/nrfx_uarte.o ./_build/app_button.o ./_build/app_error.o ./_build/app_error_handler_keil.o ./_build/app_error_weak.o ./_build/app_fifo.o ./_build/app_scheduler.o ./_build/app_timer.o ./_build/app_uart_fifo.o ./_build/app_util_platform.o ./_build/hardfault_implementation.o ./_build/nrf_assert.o ./_build/nrf_atfifo.o ./_build/nrf_atomic.o ./_build/nrf_balloc.o ./_build/nrf_fprintf.o ./_build/nrf_fprintf_format.o ./_build/nrf_memobj.o ./_build/nrf_pwr_mgmt.o ./_build/nrf_section_iter.o ./_build/nrf_strerror.o ./_build/retarget.o ./_build/nrf_atflags.o ./_build/nrf_fstorage.o ./_build/nrf_fstorage_sd.o ./_build/nrf_log_backend_rtt.o ./_build/nrf_log_backend_serial.o ./_build/nrf_log_default_backends.o ./_build/nrf_log_frontend.o ./_build/nrf_log_str_formatter.o ./_build/SEGGER_RTT.o ./_build/SEGGER_RTT_Syscalls_KEIL.o ./_build/SEGGER_RTT_printf.o ./_build/nrf_sdh.o ./_build/nrf_sdh_ble.o ./_build/nrf_sdh_soc.o -o ./_build/nrf52832_xxaa.axf —list _build/nrf52832_xxaa.map —map

    L6031U: Could not open scatter description file $(RelLinkerScriptPath): No such file or directory

    So it looks like it has just passed «$(RelLinkerScriptPath)» literally — instead of expanding it to the required path ?

    ?(

    • 4

    If I replace the «$(RelLinkerScriptPath)» macro with the literal scatter file path, the link now fails with

    L6236E: No section matches selector — no section to be FIRST/LAST.

    This seems to be because the import has not imported the original startup file — arm_startup_nrf52.s — but has instead used its own Cortex_M_Startup.s

    But the Scatter file has not been updated to match this change — hence the link error.

    So it would seem that this «import» is fatally flawed and not usable.

    :cursing: :thumbdown:

    • 5

    Hello,

    Thank you for your inquiry.
    When importing to Embedded Studio using the import wizard only files will be copied over that are directly referenced in the Keil project.
    All additional files like CMSIS and RTOS files that you have enabled through the package manager in Keil will most likely not be referenced directly so Embedded Studio can’t copy them automatically over. Same goes for Keil specific files that are linked from the Keil installation folder.
    This needs to be done manually in such cases.
    A guide on how to port from a third party IDE to ES can be found here: wiki.segger.com/How_to_port_pr…to_SEGGER_Embedded_Studio
    The guide shows an example for IAR but the troubleshooting points and general procedure apply to Keil as well.

    Are you porting a custom project or one from the Nordic SDK? In the latter case we partnered up with Nordic so you have all SDK examples with a Embedded Studio project, so no porting required.

    awneil wrote:

    This seems to be because the import has not imported the original startup file — arm_startup_nrf52.s — but has instead used its own Cortex_M_Startup.s

    In that case simply add the arm_startup_nrf52 to your project instead of the Cortex_M_Startup.s.

    Best regards,
    Nino

    Please read the forum rules before posting.

    Keep in mind, this is *not* a support forum.
    Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
    Should you be entitled to support you can contact us via our support system: segger.com/ticket/

    Or you can contact us via e-mail.

    • 6
    • 7

    What about the «$(RelLinkerScriptPath)» issue?

    • 8

    Hello,

    awneil wrote:

    Even an unmodified SES project from the Nordic SDK does not work:

    It does not work with 3.40, but Nordic clearly states to use 3.34 with their current SDK. Do that and you are good to go. Future Nordic SDK updates will probably be made available to 3.40 as well.

    Such an issue is not known to us. We will try to reproduce this behaviour and fix it if reproducible.

    Best regards,
    Nino

    Please read the forum rules before posting.

    Keep in mind, this is *not* a support forum.
    Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
    Should you be entitled to support you can contact us via our support system: segger.com/ticket/

    Or you can contact us via e-mail.

  • Share

Теги:  Программирование в Кин

Чип выбран: ARM7 (большой конец)

Если новая версия KEIL не имеет опции ARM7, перейдите на официальный веб-сайт для загрузки соответствующего патча, адрес:Patch ARM7 — выберите соответствующую версию KEIL, мне 5,1.14

Как только вы установили.

Не могу найти файловое решение:

Отмена в соответствии со следующей картинкой, затем удалите содержимое в файле Scatter, а затем компилируйте


Интеллектуальная рекомендация

указатель-события: нет; решить проблему сбоя клика

На работе сделал выпадающий список. Фон стрелки вниз добавляется к form-select :: after, но при нажатии стрелки событие раскрывающегося списка не может быть запущено. Так что добавьтеpointer-events: n…

Как идея соединяет MySQL?

1. Открытая идея 2. Справа есть база данных, щелкните 3. Нажмите » +» 4. Продолжайте нажимать 5. Выберите MySQL 6. Введите, где находится база данных, имя пользователя, пароль, тестовое соед…

CSRF и SSRF

Введение в уязвимости CSRF CSRF (подделка межсайтовых запросов, подделка межсайтовых запросов) относится к использованию недействительной идентификационной информации жертвы (файлы cookie, сеансы и т….

Разработка управления приложениями

Получить всю информацию о приложении PackageManager Android управляет пакетами приложений через PackageManager, и мы можем использовать его для получения информации о приложениях на текущем устройстве…

Вам также может понравиться

Анализ исходного кода пула потоков -jdk1.8

openjdk адрес загрузки http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/tags Логические шаги пула потоков, с которыми поставляется Java, — это, в основном, следующие шаги: Реализация псевдокода Отправить ис…

Используйте инструменты в макете XML:

В макете, если некоторые фиксированные значения атрибута не установлены, некоторое представление не будет видно, когда будет видна макет. Все, что мы можем увидеть эффект предварительного просмотра, к…

Войдите в JVM

1. Введение в JVM 1.1 Концепция JVM Введение в виртуальную машину: JVM (аббревиатура от Java Virtual Machine. Java Virtual Machine.), JVM — это настраиваемый компьютер, которого на самом деле не сущес…

пользователи Linux и группы пользователей

Пользователь категория Профиль пользователь Root (Root пользователя) Команда Советы Упорядочить #, имеет самую высокую задачу разрешения любого разрешения файла недействительно для корневого пользоват…

Котлин Базовый — класс и атрибуты

Давайте напишем простой JavaBean класса Student в Java, только с одним свойством, имя. Тот же класс в Котлин это: PUBLIC в Котлин является видимость по умолчанию, поэтому его можно опустить. Этот вид …

Topic: Source Code of LPC23XX Ethernet Bootloader  (Read 9248 times)

Hi Andy and every body,

I have problem with Ethernet Bootloader on LPC2366.
I have followed the instruction from here http://forum.flashmagictool.com/index.php?topic=3790.0
I use WireShark to capture the Frame send out from the Host when I use Flash Magic and I got the data as expected (which is ?<CR><LF>)

But the code on LPC2366 can’t received the Frame send out from Flash Magic.

I have put the debug code to print out message thru UART when MAC_RXPRODUCEINDEX != MAC_RXCONSUMEINDEX

MAC_RXPRODUCEINDEX != MAC_RXCONSUMEINDEX
   print(«UDP Framen»);

So I wonder whether the Ethernet Bootloader code from NXP website is the latest one.
If you have done this before, could you please share with me the Ethernet Bootloader Code?

Thanks.


Logged


The ethernet bootloader is bundled with Flash Magic. I’m not sure the status of any that NXP distribute.

Make sure for initial tests you directly connect the LPC2366 to your PC using a crossover cable.

Andy


Logged


Hi Andy,

Thanks for your help.

I am using crossover cable as your guide.
I have tried to compile the source code of Ethernet Bootloader for LPC23xx from Flash Magic bundle, but got the error as below

.Objethernet_bootloader.axf: error: L6031U: Could not open scatter description file .Objethernet_bootloader.sct: No such file or directory
Target not created

Could you please advise on this.
I have try with uVision4 and uVision3, still the same error


Logged


In uVision4 go to Project -> Options for Target MCB2300 Board -> Linker tab

Check/tick «Use Memory Layout from Target Dialog».

You may get a warning from the automatically generated scatter file but I believe it can be ignored.

Andy


Logged


Thank you Andy,

It works fine  ;D ;D ;D


Logged


[Keil] Learn the .sct file in keil

Recently, the source code of Acfly has been recreated. With a new interesting discovery, of course, the process is not interesting.

cause

CLONE down the code I submitted last year, compile …
😱 Erotic spicy!

linking...
.ObjectsACFly.axf: error: L6031U: Could not open scatter description file ACFly_Prophet.sct: No such file or directory

I found a solution on the Internet. I listened to the words on the CSDN, and I made a modification:

Before

img

After the change

img
Obviously, I deleted the LINKER configured in the original project directly, which is not a wise approach.

However, at the time I didn’t realize the seriousness of the problem, continue to operate, compile …
No wrong, but this encountered a very strange problem. I was getting stuck when I used DFU to burn, and then I was ready to re -burn the power. Yes, it is not initialized, and the corresponding COM port is not displayed on the ground station. It fails to directly fail when using DFU burning, and the USB cannot be detected.

DFU failed, I used Jlink to burn again, and the record was successful, but the flight control was still not initialized, like death.

Discovery loopholes

The Bootloader was re -burned, the flight control was successfully initialized, and my code was recorded again. The flight control still failed to initialize it.

At this time, I took a closer look at my only modification. Acfly_prophet.sct. At this time, I remembered the code IGNORE IGNORE I submitted last year, and the ACFLY_PROPHET.SCT is existing in it. I flip out of the ACFLY_PROPHET.SCT from the corner, add, compile, compile, burn, succeed.

What is SCT

The full name of SCT, scatter, is scattered. The .sct file is decentralized loading files. Diversifying loading files can define different positions through this script file. Where is the code, where the data is stored, which specific address is found to find the next function that needs to be run, and so on.

We all know that when the compiler generates executable files, compiles each .c file into a .o file (compiled this process), and then link many .o files to executable files (this process is called link) Essence During the link, a description file is used to specify the behavior when the link is specified. This description file is called link files, such as .ld files under Linux, decentralized loading files (.sct files) in keil.

The default, when compiling the program in the key, it will automatically generate the .sCT file (the default is in the directory of generating .o, .hex files).

Why do you specify SCT files here

Take a look at the SCT file of Acfly

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08100000 0x00100000  {    ; load region size_region
  ER_IROM1 0x08100000 0x00100000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  
  DTCM_IRAM 0x20000000 0x00020000  {  ; RW data
	heap_4.o (+RW +ZI)
	queue.o (+RW +ZI)
	port.o (+RW +ZI)
	tasks.o (+RW +ZI)
	timers.o (+RW +ZI)
	cpu_load.o (+RW +ZI)
	.ANY (HEAP)
    .ANY (STACK)
   *(.DTCM)
  }
  RW_IRAM2 0x24000000 0x00070000  {
   .ANY (+RW +ZI)
   *(.AXI_RAM)
  }
  AXI_DMA_RAM 0x24070000  0x00010000  {  ; RW data
   *(.AXI_DMA_RAM)
  }
  SRAM1 0x30000000  0x00020000  {  ; RW data
   *(.SRAM1)
  }
}

LR_IROM2 0x08040000 0x000c0000  {    ; load region size_region
  RES_IROM 0x08040000 0x000c0000  {  ; load address = execution address
   *(.RES_IROM)
  }
}

Well, I really don’t understand this.

Acfly divides its programs into Bootloader programs and user programs.

A Bootloader program and a user program, then this requires adjusting the decentralized loading file to achieve the purpose of placing two different programs in a Flash at the same time.

Acfly_prophet.sct is a decentralized loading file written by pigs themselves. It is estimated that it is to make the Bootloader program and user programs not conflict.


Reference blog:
https://www.1024sou.com/article/919869.html

https://blog.csdn.net/qq_23274715/article/details/103445958

Понравилась статья? Поделить с друзьями:
  • Error l121 improper fixup
  • Error l107 address space overflow
  • Error l104 multiple public definitions
  • Error kubridge skprx is not installed
  • Error kubernetes cluster unreachable the server has asked for the client to provide credentials