On 28.03.2011 11:51, qb...@poczta.onet.pl wrote:
> Hi
>
> W dniu 2011-03-26 12:07:30 użytkownik Ilija Kocho <ili...@siva.com.mk> 
> napisał:
>> On 23.03.2011 11:50, John Dallaway wrote:
>>> Hi Gian Maria
>>>
>>> Gian Maria wrote:
>>>
>>>> I'm porting eCos to STM3210C and I find a logical error on the
>>>> implementation of CYGPKG_HAL_CORTEXM_STM32.
>>>> CYGPKG_HAL_CORTEXM_STM32 must be the base of all STM32 uP and so is not
>>>> correct for me to use
>>>>
>>>>     cdl_option CYGHWR_HAL_CORTEXM_STM32 {
>>>>         display          "STM32 variant in use"
>>>>         flavor           data
>>>>         default_value    {"F103ZE"}
>>>>         legal_values     {"F103RC" "F103VC" "F103ZC"
>>>>                           "F103RD" "F103VD" "F103ZD"
>>>>                           "F103RE" "F103VE" "F103ZE" }
>>>>         description      "The STM32 has several variants, the main 
>>>> differences
>>>>                           being in the size of on-chip FLASH and SRAM
>>>>                           and numbers of some peripherals. This option
>>>>                           allows the platform HAL to select the specific
>>>>                           microcontroller fitted."
>>>>     }
>>>>
>>>> That is inside "ecoscvs\ecos\packages\hal\cortexm\stm32\var\current\cdl",
>>>> because with my EVB for example 
>>>> the uP is a STM32F107VC. With this I can't set the right uP as default for
>>>> the template.
>>>> I'm right? I think the correct is to put the code inside
>>>> "ecoscvs\ecos\packages\hal\cortexm\stm32\stm3210e_eval\current\cdl"
>>> I am not sure I understand your question. Are you intending to create a
>>> new platform HAL package for STM3210C-EVAL?
>>>
>>>> Can someone modify this so I can update my CVS and work with the right 
>>>> code?
>>> It will be no problem to extend the set of legal values for
>>> CYGHWR_HAL_CORTEXM_STM32. Of course, you can make this change in your
>>> local CVS checkout until you are ready to contribute your platform
>>> support for STM3210C-EVAL.
>> Current STM32 code, as is, would not work for single chip configuration
>> as it unconditionally depends on external RAM. In SIvA we have an
>> internal modification that enables single chip operation and if there is
>> an interest we would post a patch.
>>
> It seems from reference manual that STM32 familly is almost compatible. On 
> page 40 (RM) there is table with diffrences. The main issue is the interenal 
> RAM and FLASH memmory. The FLASH is not a big problem (probably code will 
> work just fine - I'm working with STM32103VD with settings for VE), but the 
> SRAM is a different matter. The stack is placed on the top of internal SRAM 
> memmory so you have to change the size of internal SRAM. This can be done in 
> \packages\hal\cortexm\stm32\stm3210e_eval\current\include\pkgconf *.ldi and 
> *.h files. The build configuration for connectivity line have to be set to 
> ROM (Startup type) because this chip doesn't support FSMC. Next thing to do 
> is to modyfy the stm3210e_eval_misc.c (remove the FSMC section).
>
>
>     base = CYGHWR_HAL_STM32_GPIOA;
>     HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRL, 0x88888888 );
>     HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRH, 0x88888888 );
>     
>     base = CYGHWR_HAL_STM32_GPIOB;
>     HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRL, 0x88888888 );
>     HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRH, 0x88888888 );
>     
>     base = CYGHWR_HAL_STM32_GPIOC;
>     HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRL, 0x88888888 );
>     HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRH, 0x88888888 );
>     
>     base = CYGHWR_HAL_STM32_GPIOD;
>     HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRL, 0x88888888 );
>     HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRH, 0x88888888 );
>     
>     // Set up GPIO lines for external bus
>
> -    base = CYGHWR_HAL_STM32_GPIOE;
> -    HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRL, 0xbbbbb4bb );
> -    HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRH, 0xbbbbbbbb );
>
> -    base = CYGHWR_HAL_STM32_GPIOF;
> -    HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRL, 0x44bbbbbb );
> -   HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRH, 0xbbbb4444 );
>
> -    base = CYGHWR_HAL_STM32_GPIOG;
> -    HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRL, 0x44bbbbbb );
> -    HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_GPIO_CRH, 0x44444bb4 );
>
>     
> -   // Set up FSMC NOR/SRAM bank 2 for NOR Flash
>
> -    base = CYGHWR_HAL_STM32_FSMC;
>
> -    HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_FSMC_BCR2, 0x00001059 );
> -    HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_FSMC_BTR2, 0x10000705 );
>
> -    // Set up FSMC NOR/SRAM bank 3 for SRAM
>
> -    HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_FSMC_BCR3, 0x00001011 );
> -    HAL_WRITE_UINT32( base+CYGHWR_HAL_STM32_FSMC_BTR3, 0x00000200 );
>
>

That's basically it. In addition in mlt files rename SRAM to RAM in
order to preserve GDB stubs / RedBoot functionality.

FSMC by default should be enabled (backward compatibility) for devices
that have it, but there should be an option to enforce disabling.

> There is only one thing left - the RCC differences. In RM there is a seperate 
> section about RCC config for CL. But at the first look it seems that 
> registers are compatible.
>
> Summary I think that for CL there is no need for creating new port but to 
> modyfy existing one for new internal FLASH and SRAM and without FSMC module.
>
+1 from me. Changes to the variant are small and easy to implement.

Ilija

Reply via email to