Porting to STM32F429, where to increase code size?
Re: Porting to STM32F429, where to increase code size?
Brilliant! Great work, badi. I can confirm it works as well, both for the CDC device and mass storage.
Re: Porting to STM32F429, where to increase code size?
I found this:
https://my.st.com/public/STe2ecommuniti ... tviews=600
The second to the last post in that thread points to a couple of bits and says that we need to
1 - Clear OTGHSULPILPEN bit in the AHB1LPENR register
2 - Set OTGHSLPEN bit in the AHB1LPENR register
and then the USB HS clock stays enabled when entering WFI sleep mode.
https://my.st.com/public/STe2ecommuniti ... tviews=600
The second to the last post in that thread points to a couple of bits and says that we need to
1 - Clear OTGHSULPILPEN bit in the AHB1LPENR register
2 - Set OTGHSLPEN bit in the AHB1LPENR register
and then the USB HS clock stays enabled when entering WFI sleep mode.
Re: Porting to STM32F429, where to increase code size?
I propose following next steps which I will do:
1. Finalize testing for proper function.
2. Implement sensors on board including python access.
3. Shift flash for scripts to the second flash bank
4. ..?
Then i would like to push it to micropython main Repo.
1. Finalize testing for proper function.
2. Implement sensors on board including python access.
3. Shift flash for scripts to the second flash bank
4. ..?
Then i would like to push it to micropython main Repo.
badi
Re: Porting to STM32F429, where to increase code size?
I would be happy to see an initial commit that just had the USB serial working (with or without MSC).
Then do additional PRs with the extra functionality. I would probably do one PR per sensor, and do the second flash bank thing as a separate PR.
Once we get SDRAM working, then we could use any of the flash sectors as part of the flash drive.
Then do additional PRs with the extra functionality. I would probably do one PR per sensor, and do the second flash bank thing as a separate PR.
Once we get SDRAM working, then we could use any of the flash sectors as part of the flash drive.
Re: Porting to STM32F429, where to increase code size?
I'm working on the STM32F429 USB_HS CDC as well.
I have a modified STM32Cube_FW_F4_V1.9.0\Projects\STM32F429I-Discovery\Demonstrations\SW4STM32, and got it working with USB_HS HOST CDC.
I am currently working at porting it back into pybV10 - story so far, so this is fantastic to see this conversation stream.
What is the best port to check - https://github.com/tobbad/micropython?
My STM32F429I-Disco setup is serial port Uart1-A10/A9 to FTDI USB cable and 5V power to CN3. I've found I need the external 5V power for serial CDC device.
I've found microPython is only defined for managing one USB at a time - either USB_FS or USB_HS .
I'd like to propose to make it work with both USB ports, since this series of hardware (F40x F42x F43x F7?? ) supports two physical UsbFullSpeed ports. Then enable code for what ever physical port is required with "USB_USB_FS " and "USE_USB_HS".
The changes I've found so far are
stm32_it.c
then in usbd_conf.c
I've compiled the above, but not run tested it yet.
I have a modified STM32Cube_FW_F4_V1.9.0\Projects\STM32F429I-Discovery\Demonstrations\SW4STM32, and got it working with USB_HS HOST CDC.
I am currently working at porting it back into pybV10 - story so far, so this is fantastic to see this conversation stream.
What is the best port to check - https://github.com/tobbad/micropython?
My STM32F429I-Disco setup is serial port Uart1-A10/A9 to FTDI USB cable and 5V power to CN3. I've found I need the external 5V power for serial CDC device.
I've found microPython is only defined for managing one USB at a time - either USB_FS or USB_HS .
I'd like to propose to make it work with both USB ports, since this series of hardware (F40x F42x F43x F7?? ) supports two physical UsbFullSpeed ports. Then enable code for what ever physical port is required with "USB_USB_FS " and "USE_USB_HS".
The changes I've found so far are
stm32_it.c
Code: Select all
extern PCD_HandleTypeDef pcd_fs_handle;
extern PCD_HandleTypeDef pcd_hs_handle;
....
#if defined(USE_USB_FS)
//#define OTG_XX_IRQHandler OTG_FS_IRQHandler
//#define OTG_XX_WKUP_IRQHandler OTG_FS_WKUP_IRQHandler
//void OTG_XX_IRQHandler(void) {
void OTG_FS_IRQHandler(void) {
HAL_PCD_IRQHandler(&pcd_fs_handle);
}
#endif
#if defined(USE_USB_HS)
//#define OTG_XX_IRQHandler OTG_HS_IRQHandler
//#define OTG_XX_WKUP_IRQHandler OTG_HS_WKUP_IRQHandler
//void OTG_XX_IRQHandler(void) {
void OTG_HS_IRQHandler(void) {
HAL_PCD_IRQHandler(&pcd_hs_handle);
}
#if defined(USE_USB_FS)
void OTG_FS_WKUP_IRQHandler(void) {
if ((&pcd_fs_handle)->Init.low_power_enable) {
.....
//#ifdef USE_USB_FS
/* Clear EXTI pending Bit*/
__HAL_USB_FS_EXTI_CLEAR_FLAG();
//#elif defined(USE_USB_HS)
/* Clear EXTI pending Bit*/
// __HAL_USB_HS_EXTI_CLEAR_FLAG();
//#endif
}
#endif
<<<then repeat above for void OTG_HS_WKUP_IRQHandler>>
#endif
Code: Select all
#ifdef USE_USB_FS
PCD_HandleTypeDef pcd_fs_handle;
#endif
#ifdef USE_USB_HS
PCD_HandleTypeDef pcd_hs_handle;
#endif
<<< USBD_LL_Init changes for above>>
Re: Porting to STM32F429, where to increase code size?
Just use the stm32f429_integration branch. I will push that further till I get to a version which I will push back to micropythons main repo.What is the best port to check - https://github.com/tobbad/micropython?
badi
Re: Porting to STM32F429, where to increase code size?
Yup that worked for me.
I pulled your stm32f429_integration on to ubuntu, built it with
make BOARD=STM32F429DISC
I have a miniUSB connected to the F429DISCO STLink
I have a microUSB connected to the F429Disco USB_HS port
Then started the ST-Link Utility/Windows8,
From Target.Connect connected to the ST-Link,
Target.Program - selected over my network to
micropython_tobbad\stmhal\build-STM32F429DISC\Firmware.hex
(Start address fixed at 0x0800 0000) - then Start - and it flashed it in 10secs.
Connected with TeraTerm/Win8 - selected the new comPort that appeared,
Hey presto
"MicroPython v1.4.5-492-gbc1f632 on 2015-11-23; F429I-DISCO with STM32F429
Type "help()" for more information.
>>>
"
Thats great it show the USB_HS port with the FS phy code init is good, and that little WIFI issue .
I am looking to have both USB phy running at the same time - which of course doesn't work for the F429I-DISCO but can do for the PYB10.
I'm using a USB A receptacle/cable on the PYB10 board to provide a host with power connection.
I have the F429DISCO demo modified that can do the supplied MSC and CDC working, (but not OTG). So I'll switch to my thread for that discussion.
http://forum.micropython.org/viewtopic. ... 2&start=20
I pulled your stm32f429_integration on to ubuntu, built it with
make BOARD=STM32F429DISC
I have a miniUSB connected to the F429DISCO STLink
I have a microUSB connected to the F429Disco USB_HS port
Then started the ST-Link Utility/Windows8,
From Target.Connect connected to the ST-Link,
Target.Program - selected over my network to
micropython_tobbad\stmhal\build-STM32F429DISC\Firmware.hex
(Start address fixed at 0x0800 0000) - then Start - and it flashed it in 10secs.
Connected with TeraTerm/Win8 - selected the new comPort that appeared,
Hey presto
"MicroPython v1.4.5-492-gbc1f632 on 2015-11-23; F429I-DISCO with STM32F429
Type "help()" for more information.
>>>
"
Thats great it show the USB_HS port with the FS phy code init is good, and that little WIFI issue .
I am looking to have both USB phy running at the same time - which of course doesn't work for the F429I-DISCO but can do for the PYB10.
I'm using a USB A receptacle/cable on the PYB10 board to provide a host with power connection.
I have the F429DISCO demo modified that can do the supplied MSC and CDC working, (but not OTG). So I'll switch to my thread for that discussion.
http://forum.micropython.org/viewtopic. ... 2&start=20
Re: Porting to STM32F429, where to increase code size?
Hi, I went to pull any updates from badi's repo and it appears that the changes have been removed (The entire integration branch) and rolled into the main MicroPython repo. That would be fine but something got broken along the way and it no longer boots with USB CDC/mass storage support. I haven't gotten around to connecting the serial port up to see if there are any errors being reported, just wanted to let people know. Badi, have you or anyone else been able to test the code now it's in the main repo?
Thanks!
Larry
Thanks!
Larry
Re: Porting to STM32F429, where to increase code size?
I just built using the latest master (364bb61df339c5012fb2d5c4f05af4c57347aa09) and it seems to work for me.
To build:
To flash and wipe the filesystem:
To flash and preserve the filesystem:
CDC and MSC both seem to be working.
I use a GNUmakefile to automate my flashing steps. My GNUmakefile (note the lowercase m in makefile) looks like this: and with that you can use: or
If you build primarily for the STM32F429DISC, then setup the BOARD appropriately near the top of the file and you no longer have to pass in the BOARD=STM32F429DISC on the command line.
I'll take the above and put it on the Wiki page for the 429.
I also managed to screw things up by flashing the regular pyboard image (by forgetting to pass in the BOARD=STM32F429DISC) instead of the 429 image, so I'll put down my recovery steps on the wiki as well.
To build:
Code: Select all
make BOARD=STM32F429DISC
Code: Select all
arm-none-eabi-objcopy -O binary -j .isr_vector -j .text -j .data build-STM32F429DISC/firmware.elf build-STM32F429DISC/firmware.bin
st-flash --reset write build-STM32F429DISC/firmware.bin 0x08000000
Code: Select all
arm-none-eabi-objcopy -O binary -j .isr_vector build-STM32F429DISC/firmware.elf build-STM32F429DISC/firmware0.bin
arm-none-eabi-objcopy -O binary -j .text -j .data build-STM32F429DISC/firmware.elf build-STM32F429DISC/firmware1.bin
st-flash write build-STM32F429DISC/firmware0.bin 0x08000000
st-flash --reset write build-STM32F429DISC/firmware1.bin 0x08020000
Code: Select all
MicroPython v1.5.1-24-g364bb61 on 2015-11-26; F429I-DISCO with STM32F429
Type "help()" for more information.
>>>
Code: Select all
$(info Executing GNUmakefile)
#BOARD = STM32F7DISC
BOARD = STM32F429DISC
#BOARD = PYBV10
$(info BOARD = $(BOARD))
#DFU_UTIL = dfu-util -s :leave
#USE_PYDFU = 1
include Makefile
.PHONY: stlink
stlink-erase-fs: $(BUILD)/firmware.elf
$(ECHO) "Writing flash"
$(Q)$(OBJCOPY) -O binary -j .isr_vector -j .text -j .data $^ $(BUILD)/firmware.bin
$(Q)st-flash --reset write $(BUILD)/firmware.bin 0x08000000
stlink: $(BUILD)/firmware.elf
$(ECHO) "Writing flash"
$(Q)$(OBJCOPY) -O binary -j .isr_vector $^ $(BUILD)/firmware0.bin
$(Q)st-flash write $(BUILD)/firmware0.bin 0x08000000
$(Q)$(OBJCOPY) -O binary -j .text -j .data $^ $(BUILD)/firmware1.bin
$(Q)st-flash --reset write $(BUILD)/firmware1.bin 0x08020000
show-board:
$(ECHO) "BOARD = ${BOARD}"
Code: Select all
make BOARD=STM32F429DISC stlink-erase-fs
Code: Select all
make BOARD=STM32F429DISC stlink
I'll take the above and put it on the Wiki page for the 429.
I also managed to screw things up by flashing the regular pyboard image (by forgetting to pass in the BOARD=STM32F429DISC) instead of the 429 image, so I'll put down my recovery steps on the wiki as well.
Re: Porting to STM32F429, where to increase code size?
Hi Dave,
Thanks for the makefile and instructions. I still ended up having problems with the firmware that was generated and so I decided to try and build it in another tree I keep around for situations like this (That hasn't been modified at all). That build worked, so I suppose I did something wrong in the original repo to cause the issues. It seems like this has happened in other git repos I've used before, making it fail to build or corrupting the tree, requiring a fresh clone to get it working again. Git is powerful but it's way too easy to get it (Or me) confused at times.
Thanks again for the help!
Larry
Thanks for the makefile and instructions. I still ended up having problems with the firmware that was generated and so I decided to try and build it in another tree I keep around for situations like this (That hasn't been modified at all). That build worked, so I suppose I did something wrong in the original repo to cause the issues. It seems like this has happened in other git repos I've used before, making it fail to build or corrupting the tree, requiring a fresh clone to get it working again. Git is powerful but it's way too easy to get it (Or me) confused at times.
Thanks again for the help!
Larry