kokoromi 发表于 2021-1-14 10:25:05

STM32L0系列的怎么移植ucosiii?

L0系列的是M0+的内核,我在UCOS官网上没找到基于L0的源码,只有L1和L4的,都不是M0+内核的,该如何移植系统呢?是不是得改那些汇编文件啊。

eric2013 发表于 2021-1-14 11:11:04

使用最新的3.08,里面有对应的M0的port文件,添加上即可使用。

kokoromi 发表于 2021-1-14 12:58:58

eric2013 发表于 2021-1-14 11:11
使用最新的3.08,里面有对应的M0的port文件,添加上即可使用。

官网没找到有3.08的啊,L系列的没那么高版本,你说的是H7的吧?

eric2013 发表于 2021-1-15 10:18:45

kokoromi 发表于 2021-1-14 12:58
官网没找到有3.08的啊,L系列的没那么高版本,你说的是H7的吧?

uCOS全家桶PDF文档和源码整理汇总贴,提供论坛,百度云和腾讯云下载(2020-03-09)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=96764&fromuid=58
(出处: 硬汉嵌入式论坛)

kokoromi 发表于 2021-1-15 10:29:00

eric2013 发表于 2021-1-15 10:18
uCOS全家桶PDF文档和源码整理汇总贴,提供论坛,百度云和腾讯云下载(2020-03-09)
http://www.armbbs.c ...

硬汉果然够硬{:8:}

kokoromi 发表于 2021-1-15 10:42:37

eric2013 发表于 2021-1-15 10:18
uCOS全家桶PDF文档和源码整理汇总贴,提供论坛,百度云和腾讯云下载(2020-03-09)
http://www.armbbs.c ...

uC-OS3-master.zip 这个源码看了下和之前的结构很不一样,有没有介绍如何使用以及各个文件夹和文件的帖子?

kokoromi 发表于 2021-1-15 11:14:34

官方文档里的画红框的这个ARM-Cortex-M0文件夹,在源码目录里没有啊,什么情况?


eric2013 发表于 2021-1-15 15:09:15

kokoromi 发表于 2021-1-15 11:14
官方文档里的画红框的这个ARM-Cortex-M0文件夹,在源码目录里没有啊,什么情况?
M0是V6架构


kokoromi 发表于 2021-1-15 15:15:58

eric2013 发表于 2021-1-15 15:09
M0是V6架构

找到了,谢谢。
看了下,源码结构和之前大不相同啊,原来的uC/CPU和uC/LIB都单独拿出来了,我还在uCOS3里面找半天...
这个新的源码移植有相关帖子吗?

PS:__dbg_uCOS-III.c 源码里这个文件干啥的?

eric2013 发表于 2021-1-16 12:55:44

kokoromi 发表于 2021-1-15 15:15
找到了,谢谢。
看了下,源码结构和之前大不相同啊,原来的uC/CPU和uC/LIB都单独拿出来了,我还在uCOS3 ...

1、移植看我本帖4楼发的就行
2、这很早就有了,没啥用。

kokoromi 发表于 2021-1-16 14:30:03

eric2013 发表于 2021-1-16 12:55
1、移植看我本帖4楼发的就行
2、这很早就有了,没啥用。

4楼的链接里面只有全家筒的源码下载地址和说明文档,没看到新版系统的移植说明呀{:18:}

eric2013 发表于 2021-1-17 08:49:21

kokoromi 发表于 2021-1-16 14:30
4楼的链接里面只有全家筒的源码下载地址和说明文档,没看到新版系统的移植说明呀

看错了,是这个

基于V5,V6和V7的最新版uCOS-III V3.08.00程序模板,含MDK和IAR两个版本,支持uC/Probe(2020-03-19)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=96918&fromuid=58
(出处: 硬汉嵌入式论坛)

kokoromi 发表于 2021-1-18 13:26:58

eric2013 发表于 2021-1-17 08:49
看错了,是这个

基于V5,V6和V7的最新版uCOS-III V3.08.00程序模板,含MDK和IAR两个版本,支持uC/Prob ...

谢谢~

kokoromi 发表于 2021-1-18 15:22:24

还想请教个问题,uC-CPU-master文件夹下的cpu_cache.h这个文件是做什么的?

eric2013 发表于 2021-1-18 15:48:29

kokoromi 发表于 2021-1-18 15:22
还想请教个问题,uC-CPU-master文件夹下的cpu_cache.h这个文件是做什么的?

不用管,用不上。

kokoromi 发表于 2021-1-18 16:17:19

eric2013 发表于 2021-1-18 15:48
不用管,用不上。

好的,3Q~

kokoromi 发表于 2021-1-19 10:15:05

eric2013 发表于 2021-1-18 15:48
不用管,用不上。

大神,还有个问题,uC-LIB-master文件夹下的Ports里面,没有M0+内核的移植文件咋办?

eric2013 发表于 2021-1-19 12:43:09

kokoromi 发表于 2021-1-19 10:15
大神,还有个问题,uC-LIB-master文件夹下的Ports里面,没有M0+内核的移植文件咋办?

这个选个M3的使用即可

kokoromi 发表于 2021-1-19 13:21:51

eric2013 发表于 2021-1-19 12:43
这个选个M3的使用即可

M3的和M0+的通用嘛?

kokoromi 发表于 2021-1-20 10:20:56

eric2013 发表于 2021-1-19 12:43
这个选个M3的使用即可

我把M3的加进去用IAR编译提示一堆语法错误、操作数过多等错误提示,什么情况,选的的确是IAR文件夹里的,怎么这么多错误?

;********************************************************************************************************
;                                             uC/LIB
;                                       Custom Library Modules
;
;                  Copyright 2004-2020 Silicon Laboratories Inc. www.silabs.com
;
;                                 SPDX-License-Identifier: APACHE-2.0
;
;               This software is subject to an open source license and is distributed by
;                Silicon Laboratories Inc. pursuant to the terms of the Apache License,
;                  Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
;
;********************************************************************************************************


;********************************************************************************************************
;
;                                     STANDARD MEMORY OPERATIONS
;
;                                           ARM-Cortex-M3
;                                           IAR Compiler
;
; Filename : lib_mem_a.asm
; Version: V1.39.00
;********************************************************************************************************
; Note(s): (1) NO compiler-supplied standard library functions are used in library or product software.
;
;                (a) ALL standard library functions are implemented in the custom library modules :
;
;                  (1) \<Custom Library Directory>\lib*.*
;
;                  (2) \<Custom Library Directory>\Ports\<cpu>\<compiler>\lib*_a.*
;
;                        where
;                                  <Custom Library Directory>      directory path for custom library software
;                                  <cpu>                           directory name for specific processor (CPU)
;                                  <compiler>                      directory name for specific compiler
;
;                (b) Product-specific library functions are implemented in individual products.
;
;            (2) Assumes ARM CPU mode configured for Little Endian.
;********************************************************************************************************


;********************************************************************************************************
;                                           PUBLIC FUNCTIONS
;********************************************************************************************************

      PUBLICMem_Copy


;********************************************************************************************************
;                                    CODE GENERATION DIRECTIVES
;********************************************************************************************************

      RSEG CODE:CODE:NOROOT(2)


;********************************************************************************************************
;                                             Mem_Copy()
;
; Description : Copy data octets from one buffer to another buffer.
;
; Argument(s) : pdest       Pointer to destination memory buffer.
;
;               psrc      Pointer to source      memory buffer.
;
;               size      Number of data buffer octets to copy.
;
; Return(s)   : none.
;
; Caller(s)   : Application.
;
; Note(s)   : (1) Null copies allowed (i.e. 0-octet size).
;
;               (2) Memory buffers NOT checked for overlapping.
;
;               (3) Modulo arithmetic is used to determine whether a memory buffer starts on a 'CPU_ALIGN'
;                   address boundary.
;
;               (4) ARM Cortex-M3 processors use a subset of the ARM Thumb-2 instruction set which does
;                   NOT support 16-bit conditional branch instructions but ONLY supports 8-bit conditional
;                   branch instructions.
;
;                   Therefore, branches exceeding 8-bit, signed, relative offsets :
;
;                   (a) CANNOT be implemented with   conditional branches; but ...
;                   (b) MUST   be implemented with non-conditional branches.
;********************************************************************************************************

; voidMem_Copy (void      *pdest,       ;==>R0
;               void      *psrc,      ;==>R1
;               CPU_SIZE_T   size)      ;==>R2

Mem_Copy:
      CMP         R0, #0
      BNE         Mem_Copy_1
      BX          LR                      ; return if pdest == NULL

Mem_Copy_1:
      CMP         R1, #0
      BNE         Mem_Copy_2
      BX          LR                      ; return if psrc== NULL

Mem_Copy_2:
      CMP         R2, #0
      BNE         Mem_Copy_3
      BX          LR                      ; return if size== 0

Mem_Copy_3:
      STMFD       SP!, {R3-R12}         ; save registers on stack


Chk_Align_32:                               ; check if both dest & src 32-bit aligned
      AND         R3, R0, #0x03
      AND         R4, R1, #0x03
      CMP         R3, R4
      BNE         Chk_Align_16            ; not 32-bit aligned, check for 16-bit alignment

      RSB         R3, R3, #0x04         ; compute 1-2-3 pre-copy bytes (to align to the next 32-bit boundary)
      AND         R3, R3, #0x03

Pre_Copy_1:
      CMP         R3, #1                  ; copy 1-2-3 bytes (to align to the next 32-bit boundary)
      BCC         Copy_32_1               ; start real 32-bit copy
      CMP         R2, #1                  ; check if any more data to copy
      BCS         Pre_Copy_1_Cont
      B         Mem_Copy_END            ;         no more data to copy (see Note #4b)

Pre_Copy_1_Cont:
      LDRB      R4, , #1
      STRB      R4, , #1
      SUB         R3, R3, #1
      SUB         R2, R2, #1
      B         Pre_Copy_1


Chk_Align_16:                               ; check if both dest & src 16-bit aligned
      AND         R3, R0, #0x01
      AND         R4, R1, #0x01
      CMP         R3, R4
      BEQ         Pre_Copy_2
      B         Copy_08_1               ; not 16-bit aligned, start 8-bit copy (see Note #4b)

Pre_Copy_2:
      CMP         R3, #1                  ; copy 1 byte (to align to the next 16-bit boundary)
      BCC         Copy_16_1               ; start real 16-bit copy

      LDRB      R4, , #1
      STRB      R4, , #1
      SUB         R3, R3, #1
      SUB         R2, R2, #1
      B         Pre_Copy_2


Copy_32_1:
      CMP         R2, #(04*10*09)         ; Copy 9 chunks of 10 32-bit words (360 octets per loop)
      BCC         Copy_32_2
      LDMIA       R1!, {R3-R12}
      STMIA       R0!, {R3-R12}
      LDMIA       R1!, {R3-R12}
      STMIA       R0!, {R3-R12}
      LDMIA       R1!, {R3-R12}
      STMIA       R0!, {R3-R12}
      LDMIA       R1!, {R3-R12}
      STMIA       R0!, {R3-R12}
      LDMIA       R1!, {R3-R12}
      STMIA       R0!, {R3-R12}
      LDMIA       R1!, {R3-R12}
      STMIA       R0!, {R3-R12}
      LDMIA       R1!, {R3-R12}
      STMIA       R0!, {R3-R12}
      LDMIA       R1!, {R3-R12}
      STMIA       R0!, {R3-R12}
      LDMIA       R1!, {R3-R12}
      STMIA       R0!, {R3-R12}
      SUB         R2, R2, #(04*10*09)
      B         Copy_32_1

Copy_32_2:
      CMP         R2, #(04*10*01)         ; Copy chunks of 10 32-bit words (40 octets per loop)
      BCC         Copy_32_3
      LDMIA       R1!, {R3-R12}
      STMIA       R0!, {R3-R12}
      SUB         R2, R2, #(04*10*01)
      B         Copy_32_2

Copy_32_3:
      CMP         R2, #(04*01*01)         ; Copy remaining 32-bit words
      BCC         Copy_16_1
      LDR         R3, , #4
      STR         R3, , #4
      SUB         R2, R2, #(04*01*01)
      B         Copy_32_3

Copy_16_1:
      CMP         R2, #(02*01*16)         ; Copy chunks of 16 16-bit words (32 bytes per loop)
      BCC         Copy_16_2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      LDRH      R3, , #2
      STRH      R3, , #2
      SUB         R2, R2, #(02*01*16)
      B         Copy_16_1

Copy_16_2:
      CMP         R2, #(02*01*01)         ; Copy remaining 16-bit words
      BCC         Copy_08_1
      LDRH      R3, , #2
      STRH      R3, , #2
      SUB         R2, R2, #(02*01*01)
      B         Copy_16_2

Copy_08_1:
      CMP         R2, #(01*01*16)         ; Copy chunks of 16 8-bit words (16 bytes per loop)
      BCC         Copy_08_2
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      LDRB      R3, , #1
      STRB      R3, , #1
      SUB         R2, R2, #(01*01*16)
      B         Copy_08_1

Copy_08_2:
      CMP         R2, #(01*01*01)         ; Copy remaining 8-bit words
      BCC         Mem_Copy_END
      LDRB      R3, , #1
      STRB      R3, , #1
      SUB         R2, R2, #(01*01*01)
      B         Copy_08_2


Mem_Copy_END:
      LDMFD       SP!, {R3-R12}         ; restore registers from stack
      BX          LR                      ; return


      END


emwin 发表于 2021-1-20 20:01:12

这个路径下:/Ports/ARM-Cortex-M/ARMv6-M
页: [1]
查看完整版本: STM32L0系列的怎么移植ucosiii?