STM32L0系列的怎么移植ucosiii?
L0系列的是M0+的内核,我在UCOS官网上没找到基于L0的源码,只有L1和L4的,都不是M0+内核的,该如何移植系统呢?是不是得改那些汇编文件啊。使用最新的3.08,里面有对应的M0的port文件,添加上即可使用。 eric2013 发表于 2021-1-14 11:11
使用最新的3.08,里面有对应的M0的port文件,添加上即可使用。
官网没找到有3.08的啊,L系列的没那么高版本,你说的是H7的吧? 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
(出处: 硬汉嵌入式论坛)
eric2013 发表于 2021-1-15 10:18
uCOS全家桶PDF文档和源码整理汇总贴,提供论坛,百度云和腾讯云下载(2020-03-09)
http://www.armbbs.c ...
硬汉果然够硬{:8:} eric2013 发表于 2021-1-15 10:18
uCOS全家桶PDF文档和源码整理汇总贴,提供论坛,百度云和腾讯云下载(2020-03-09)
http://www.armbbs.c ...
uC-OS3-master.zip 这个源码看了下和之前的结构很不一样,有没有介绍如何使用以及各个文件夹和文件的帖子? 官方文档里的画红框的这个ARM-Cortex-M0文件夹,在源码目录里没有啊,什么情况?
kokoromi 发表于 2021-1-15 11:14
官方文档里的画红框的这个ARM-Cortex-M0文件夹,在源码目录里没有啊,什么情况?
M0是V6架构
eric2013 发表于 2021-1-15 15:09
M0是V6架构
找到了,谢谢。
看了下,源码结构和之前大不相同啊,原来的uC/CPU和uC/LIB都单独拿出来了,我还在uCOS3里面找半天...
这个新的源码移植有相关帖子吗?
PS:__dbg_uCOS-III.c 源码里这个文件干啥的? kokoromi 发表于 2021-1-15 15:15
找到了,谢谢。
看了下,源码结构和之前大不相同啊,原来的uC/CPU和uC/LIB都单独拿出来了,我还在uCOS3 ...
1、移植看我本帖4楼发的就行
2、这很早就有了,没啥用。 eric2013 发表于 2021-1-16 12:55
1、移植看我本帖4楼发的就行
2、这很早就有了,没啥用。
4楼的链接里面只有全家筒的源码下载地址和说明文档,没看到新版系统的移植说明呀{:18:} 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
(出处: 硬汉嵌入式论坛)
eric2013 发表于 2021-1-17 08:49
看错了,是这个
基于V5,V6和V7的最新版uCOS-III V3.08.00程序模板,含MDK和IAR两个版本,支持uC/Prob ...
谢谢~ 还想请教个问题,uC-CPU-master文件夹下的cpu_cache.h这个文件是做什么的? kokoromi 发表于 2021-1-18 15:22
还想请教个问题,uC-CPU-master文件夹下的cpu_cache.h这个文件是做什么的?
不用管,用不上。 eric2013 发表于 2021-1-18 15:48
不用管,用不上。
好的,3Q~ eric2013 发表于 2021-1-18 15:48
不用管,用不上。
大神,还有个问题,uC-LIB-master文件夹下的Ports里面,没有M0+内核的移植文件咋办?
kokoromi 发表于 2021-1-19 10:15
大神,还有个问题,uC-LIB-master文件夹下的Ports里面,没有M0+内核的移植文件咋办?
这个选个M3的使用即可 eric2013 发表于 2021-1-19 12:43
这个选个M3的使用即可
M3的和M0+的通用嘛? 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
这个路径下:/Ports/ARM-Cortex-M/ARMv6-M
页:
[1]