Code Monkey home page Code Monkey logo

pic32-avrdude-bootloader's People

Contributors

embeddedman avatar gmtii avatar jacobchrist avatar lstandage avatar majenkotech avatar ricklon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pic32-avrdude-bootloader's Issues

Break out the board definitions into separate or vendor files

The number of boards in the BoardConfig.h file is getting quite large now, and it's hard to navigate. I would suggest breaking this board down into a "wrapper" file with all the top and bottom portions in it, and then move all the actual board configuration blocks out into separate header files (either a single header for each board, or multiple boards by the same vendor or in the same family together in a header) so that it's possible to just jump in to the board configuration you want (and to copy that section and edit it for a new board).

Unable to Compile Bootloader for Microchip MZ Starter Kit USB

I cloned the UART MPLAB config and changed the capabilities in microchip.hto blCapUSBInterface. In looking at the build output for a Fubarino SD USB, I see cdccam.o. Do I need to make further changes to the MPLAB config for the M7 board to include the necessary USB code? Thanks!


CLEAN SUCCESSFUL (total time: 59ms)
make -f nbproject/Makefile-MICROCHIP_MZ_STARTER_KIT_USB.mk SUBPROJECTS= .build-conf
make[1]: Entering directory '/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/chipKIT-Bootloaders.X'
make  -f nbproject/Makefile-MICROCHIP_MZ_STARTER_KIT_USB.mk dist/MICROCHIP_MZ_STARTER_KIT_USB/production/chipKIT-Bootloaders.X.production.hex
make[2]: Entering directory '/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/chipKIT-Bootloaders.X'
"/Applications/microchip/xc32/v2.05/bin/xc32-gcc" -c -mprocessor=32MZ2048EFM144 -MMD -MF build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/pic32_init_cache.o.d -o build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/pic32_init_cache.o ../pic32_init_cache.S -DXPRJ_MICROCHIP_MZ_STARTER_KIT_USB=MICROCHIP_MZ_STARTER_KIT_USB -no-legacy-libc -ftoplevel-reorder -Wa,--defsym=__MPLAB_BUILD=1,-MD=build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/pic32_init_cache.o.asm.d,--gdwarf-2 -DPIC32MZ -DINIT_MMU_MZ_FIXED -DINIT_SSX -DINIT_L1_CACHE -DINIT_DSPR2 -DPIC32_SRS_SET_COUNT=8 
"/Applications/microchip/xc32/v2.05/bin/xc32-gcc" -c -mprocessor=32MZ2048EFM144 -MMD -MF build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/crt0MZ.o.d -o build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/crt0MZ.o ../crt0MZ.S -DXPRJ_MICROCHIP_MZ_STARTER_KIT_USB=MICROCHIP_MZ_STARTER_KIT_USB -no-legacy-libc -ftoplevel-reorder -Wa,--defsym=__MPLAB_BUILD=1,-MD=build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/crt0MZ.o.asm.d,--gdwarf-2 -DPIC32MZ -DINIT_MMU_MZ_FIXED -DINIT_SSX -DINIT_L1_CACHE -DINIT_DSPR2 -DPIC32_SRS_SET_COUNT=8 
"/Applications/microchip/xc32/v2.05/bin/xc32-gcc" -c -mprocessor=32MZ2048EFM144 -MMD -MF build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/pic32_init_tlb_ebi_sqi.o.d -o build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/pic32_init_tlb_ebi_sqi.o ../pic32_init_tlb_ebi_sqi.S -DXPRJ_MICROCHIP_MZ_STARTER_KIT_USB=MICROCHIP_MZ_STARTER_KIT_USB -no-legacy-libc -ftoplevel-reorder -Wa,--defsym=__MPLAB_BUILD=1,-MD=build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/pic32_init_tlb_ebi_sqi.o.asm.d,--gdwarf-2 -DPIC32MZ -DINIT_MMU_MZ_FIXED -DINIT_SSX -DINIT_L1_CACHE -DINIT_DSPR2 -DPIC32_SRS_SET_COUNT=8 
"/Applications/microchip/xc32/v2.05/bin/xc32-gcc" -g -x c -c -mprocessor=32MZ2048EFM144 -D_BOARD_MICROCHIP_ETH_START_KIT_USB_ -I.. -MMD -MF build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/main.o.d -o build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/main.o ../main.c -DXPRJ_MICROCHIP_MZ_STARTER_KIT_USB=MICROCHIP_MZ_STARTER_KIT_USB -no-legacy-libc -ftoplevel-reorder 
"/Applications/microchip/xc32/v2.05/bin/xc32-gcc"   -mprocessor=32MZ2048EFM144 -nostdlib -nostartfiles -mno-float -o dist/MICROCHIP_MZ_STARTER_KIT_USB/production/chipKIT-Bootloaders.X.production.elf build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/main.o build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/crt0MZ.o build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/pic32_init_cache.o build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/pic32_init_tlb_ebi_sqi.o          -DXPRJ_MICROCHIP_MZ_STARTER_KIT_USB=MICROCHIP_MZ_STARTER_KIT_USB  -no-legacy-libc  -ftoplevel-reorder   -Wl,--defsym=__MPLAB_BUILD=1,--script="../MZ-boot-linkerscript.ld",--no-code-in-dinit,--no-dinit-in-serial-mem,-Map="dist/MICROCHIP_MZ_STARTER_KIT_USB/production/chipKIT-Bootloaders.X.production.map",--memorysummary,dist/MICROCHIP_MZ_STARTER_KIT_USB/production/memoryfile.xml
nbproject/Makefile-MICROCHIP_MZ_STARTER_KIT_USB.mk:198: recipe for target 'dist/MICROCHIP_MZ_STARTER_KIT_USB/production/chipKIT-Bootloaders.X.production.hex' failed
build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/main.o: In function `usb_print':
make[2]: Leaving directory '/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/chipKIT-Bootloaders.X'
/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/BoardConfig.h:673: undefined reference to `cdcacm_attached'
nbproject/Makefile-MICROCHIP_MZ_STARTER_KIT_USB.mk:103: recipe for target '.build-conf' failed
/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/BoardConfig.h:673: undefined reference to `cdcacm_active'
make[1]: Leaving directory '/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/chipKIT-Bootloaders.X'
/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/BoardConfig.h:674: undefined reference to `cdcacm_print'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/main.o: In function `ExecuteApp':
/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/main.c:631: undefined reference to `usb_uninitialize'
build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/main.o: In function `InitStk500v2Interface':
/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/BoardConfig.h:666: undefined reference to `usb_initialize'
/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/BoardConfig.h:667: undefined reference to `null_reset_cbfn'
/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/BoardConfig.h:667: undefined reference to `null_reset_cbfn'
/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/BoardConfig.h:667: undefined reference to `cdcacm_register'
build/MICROCHIP_MZ_STARTER_KIT_USB/production/_ext/1472/main.o: In function `main':
/Users/bittond/GoogleDrive/src/PIC32-avrdude-bootloader/bootloaders/main.c:229: undefined reference to `usb_isr'
collect2: error: ld returned 255 exit status
make[2]: *** [dist/MICROCHIP_MZ_STARTER_KIT_USB/production/chipKIT-Bootloaders.X.production.hex] Error 255
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 575ms)

Post-compilation command

The post-compilation command to copy the .hex file to the bootloader images folder is a Windows specific command.

This breaks the compilation on people using a real operating system.

Why not just change the "ImagePath" in the project?

Link Error: Could not allocate

The bootloader works briljantly on a Fubarino mini. I want to compile the bootloader for a custom pcb with different parameters to switch between program and application state.
I can't however, get the FUBARINO_MINI_USB code to compile.
My compiler is the XC32 Free edition.
This is the output from MPLABX:

CLEAN SUCCESSFUL (total time: 79ms) make -f nbproject/Makefile-FUBARINO_MINI_USB.mk SUBPROJECTS= .build-conf make[1]: Entering directory '/home/gregoor/MPLABXProjects/PIC32-avrdude-bootloader/bootloaders/chipKIT-Bootloaders.X' make -f nbproject/Makefile-FUBARINO_MINI_USB.mk dist/FUBARINO_MINI_USB/production/chipKIT-Bootloaders.X.production.hex make[2]: Entering directory '/home/gregoor/MPLABXProjects/PIC32-avrdude-bootloader/bootloaders/chipKIT-Bootloaders.X' ../cdcacm.c:1:0: warning: Compiler option (Optimize for size) ignored because the free XC32 C compiler does not support this feature. [enabled by default] /**** cdcacm.c **************************************************************** ^ cc1: note: Disable the option or visit http://www.microchip.com/MPLABXCcompilers to purchase a new MPLAB XC compiler license. ../main.c:1:0: warning: Compiler option (Optimize for size) ignored because the free XC32 C compiler does not support this feature. [enabled by default] /**** main.c ****************************************************************** ^ cc1: note: Disable the option or visit http://www.microchip.com/MPLABXCcompilers to purchase a new MPLAB XC compiler license. ../usb.c:1:0: warning: Compiler option (Optimize for size) ignored because the free XC32 C compiler does not support this feature. [enabled by default] /**** usb.c ******************************************************************* ^ cc1: note: Disable the option or visit http://www.microchip.com/MPLABXCcompilers to purchase a new MPLAB XC compiler license. "/opt/microchip/xc32/v1.42/bin/xc32-gcc" -c -mprocessor=32MX250F128D -I.. -MMD -MF build/FUBARINO_MINI_USB/production/_ext/1472/crt0.o.d -o build/FUBARINO_MINI_USB/production/_ext/1472/crt0.o ../crt0.S -DXPRJ_FUBARINO_MINI_USB=FUBARINO_MINI_USB -no-legacy-libc -ftoplevel-reorder -Wa,--defsym=__MPLAB_BUILD=1,-MD=build/FUBARINO_MINI_USB/production/_ext/1472/crt0.o.asm.d,--gdwarf-2,-I.. "/opt/microchip/xc32/v1.42/bin/xc32-gcc" -g -x c -c -mprocessor=32MX250F128D -mips16 -mno-float -Os -D_BOARD_FUBARINO_MINI_USB_ -I.. -MMD -MF build/FUBARINO_MINI_USB/production/_ext/1472/cdcacm.o.d -o build/FUBARINO_MINI_USB/production/_ext/1472/cdcacm.o ../cdcacm.c -DXPRJ_FUBARINO_MINI_USB=FUBARINO_MINI_USB -no-legacy-libc -ftoplevel-reorder "/opt/microchip/xc32/v1.42/bin/xc32-gcc" -g -x c -c -mprocessor=32MX250F128D -mips16 -mno-float -Os -D_BOARD_FUBARINO_MINI_USB_ -I.. -MMD -MF build/FUBARINO_MINI_USB/production/_ext/1472/main.o.d -o build/FUBARINO_MINI_USB/production/_ext/1472/main.o ../main.c -DXPRJ_FUBARINO_MINI_USB=FUBARINO_MINI_USB -no-legacy-libc -ftoplevel-reorder "/opt/microchip/xc32/v1.42/bin/xc32-gcc" -g -x c -c -mprocessor=32MX250F128D -mips16 -mno-float -Os -D_BOARD_FUBARINO_MINI_USB_ -I.. -MMD -MF build/FUBARINO_MINI_USB/production/_ext/1472/usb.o.d -o build/FUBARINO_MINI_USB/production/_ext/1472/usb.o ../usb.c -DXPRJ_FUBARINO_MINI_USB=FUBARINO_MINI_USB -no-legacy-libc -ftoplevel-reorder "/opt/microchip/xc32/v1.42/bin/xc32-gcc" -mprocessor=32MX250F128D -nostdlib -nostartfiles -mips16 -mno-float -o dist/FUBARINO_MINI_USB/production/chipKIT-Bootloaders.X.production.elf build/FUBARINO_MINI_USB/production/_ext/1472/main.o build/FUBARINO_MINI_USB/production/_ext/1472/crt0.o build/FUBARINO_MINI_USB/production/_ext/1472/cdcacm.o build/FUBARINO_MINI_USB/production/_ext/1472/usb.o -DXPRJ_FUBARINO_MINI_USB=FUBARINO_MINI_USB -no-legacy-libc -ftoplevel-reorder -Wl,--defsym=__MPLAB_BUILD=1,--script="../MX1-2-USB-boot-linkerscript.ld",--no-code-in-dinit,--no-dinit-in-serial-mem,-L"../../../../../../opt/microchip/xc32/v1.42/pic32mx/lib",-L"../../../../../../../../Program Files (x86)/Microchip/MPLAB C32 Suite/lib",-L"../../../../../../../../Program Files (x86)/Microchip/MPLAB C32 Suite/pic32mx/lib",-Map="dist/FUBARINO_MINI_USB/production/MX7cK.X.production.map",--memorysummary,dist/FUBARINO_MINI_USB/production/memoryfile.xml,-Os nbproject/Makefile-FUBARINO_MINI_USB.mk:188: recipe for target 'dist/FUBARINO_MINI_USB/production/chipKIT-Bootloaders.X.production.hex' failed make[2]: Leaving directory '/home/gregoor/MPLABXProjects/PIC32-avrdude-bootloader/bootloaders/chipKIT-Bootloaders.X' nbproject/Makefile-FUBARINO_MINI_USB.mk:97: recipe for target '.build-conf' failed make[1]: Leaving directory '/home/gregoor/MPLABXProjects/PIC32-avrdude-bootloader/bootloaders/chipKIT-Bootloaders.X' nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed /opt/microchip/xc32/v1.42/bin/bin/gcc/pic32mx/4.8.3/../../../../bin/xc32-ld: dist/FUBARINO_MINI_USB/production/chipKIT-Bootloaders.X.production.elf section '.splitrodata' will not fit in region 'split_program_mem' build/FUBARINO_MINI_USB/production/_ext/1472/main.o: Link Error: Could not allocate section .text, size = 3208 bytes, attributes = code Link Error: Could not allocate program memory collect2: error: ld returned 255 exit status make[2]: *** [dist/FUBARINO_MINI_USB/production/chipKIT-Bootloaders.X.production.hex] Error 255 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 899ms)

When I try to build FUBARINO_SDZ_UART the build is successful.

Thanks in advance!

Detecting operation on simulator to bypass delays

When running the bootloader on the PIC32 simulator in MPLAB X, the execution is very slow. The 2 second timeout that is used on UART-based bootloaders takes upwards of 6 minutes to run on the simulator.

If there is a way, the bootloader should detect whether it is running on real hardware or on the simulator (I'm checking with the simulator team to see if this is possible), and then bypass some of the delays in order to speed up execution.

Bootloaders do not protect themselves from being overwritten

The bootloaders, if fed a hex file that contains addresses the bootloader currently occupies, will erase the corresponding pages and attempt to write to them. Eventually a page will be erased that the bootloader is currently executing, and will subsequently crash.

The bootloaders need to know what areas it occupies, and prevent any addresses in those areas from being erased or programmed.

Makefile generates different output from MPLAB X configurations

Right now, when I build a bootloader using the makefile, the hex file produced does not match the hex file produced from MPLABX. I'm assuming this is because of differences in the command line options given to each system for building. I'm trying to work out the differences in command line options, but haven't hit on the magic set yet for the makefile that allows it to produce the same output as MPLAB X. I really like using the makefile as it's much faster (don't have to fire up MPLAB X) and you can have it build all hex files at one time which is awesome.

I think the task here is to harmonize the command line options between MPLAB X configurations and the makefile. I'm not saying that the MPLAB X options are exactly right - maybe they need to change too. But I think it would be good if both ways of compiling produced identical output.

small config problem in MPLAB-X ( "set Configuration option" for Lenny Board is missing )

hi
i downloaded the PIC32-avrdude-bootloader and loaded it in MPLAB X IDE v4.05
i want try to compile the bootloader for the Lenny Board ( Majenko ) and saw,
that there is majenko.h available and Lenny Board is on the list
but the "set Configuration" ( right click on Main Project folder ) to this was missing.

grafik

so i did open the "customize" and created over "Manage Configurations"
a new "MAJENKO_LENNY"

grafik

with PIC32MX270F256D and PICKit3 and XC 1.44 compiler and set it to active.

grafik

after set this config as active, i saw, that in "majenko.h" never "BOARD_MAJENKO_LENNY" config highlighted - there is highlighted "BOARD_MAJENKO_ULTRANANO" and i think this is wrong.

grafik

a test with a compile, and upload with PICkit3 there is opposite the highlighted "ULTRANANO" PIC32MX270F256D as Device ( left bottom corner ) but i think this comes from the "RGB_STATION_USB_BLE" Board.

for a simply test, i changed the PIC in Lenny Config from 256D to 128D for look,
does this make a change - but did not. the 270F256D comes from the "RGB_STATION_USB_BLE" board then.

grafik

can someone check this or better - can someone add the "set configuration" for the "Board Lenny"?
or is this a "bug" in MPLAP-X?

i want test the Bootloader Program Button on RB13 or RA10 on a Breadboard Version with an PIC32MX270F256D with same setup like the Lenny Board is for deeper learn and how it works.

thank you so much!
best wishes
rudi ;-)

Compiling bootloader TRISCCLR and LATCCLR undeclared

Hi all,
Using Mplab X IDE v5.3 and latest XC32 compiler with optimisations enabled on ubuntu, just downloading the git repo and trying to clean and build the Majenko ds mini configuration I get the following errors
1.
Assembler error Expression out of range on line 268 of crt0.S

266 _dinit_end:
267 addu SRC,3
268 addiu LEN,$0,0xFFFFFFFC

TRISCCLR undeclared in BoardConfig.h in the following line
#define EnableBootLED() (CAT_3(TRIS,BLedLat,CLR) = (1 << BLedBit))

and LATCCLR undeclared as well

I assume these are macros to control the pin input/output state? Why aren't they declared? am I missing plib or something?

Thanks in advance!

Bootloaders use boot flash areas typically used by debug executive

The bootloaders try to use most or all of boot flash, but there is an area of boot flash on MX devices that is used for a debug executive by MPLAB tools (Real ICE, ICD 3, PICkit 3, even chipKIT Prog). The result is that MPLAB projects that have the bootloader as a loadable will not be able to execute, as the bootloader will fail to operate.

Ideally, the area for the debug executive would be blocked out by the linker script. This might have to be done for future boards only, rather than clobber existing product bootloaders.

Issues with pinguino Micro

I have tested the bootloader for the Pinguino micro with the new 1.6.8 Arduino IDE and here the issues:
1- Using the Olimex_Pinguino_Micro_UART_57600.hex, it is not detected as a USB connected device and it is not possible to upload sketches using the Arduino IDE

2- Using the Olimex_PIC32_Pinguino.hex the Arduino IDE can program the board, it runs but if you disconnect the board and then connect it back the board is in a reset state and does not run the sketch, even resetting it or pushing the buttons does not work.

any suggestions?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.