μC/OS之bulid stack

任务堆栈建立
本文介绍任务堆栈的两种建立方式:静态建立与动态建立。静态堆栈通过定义数组实现,而动态堆栈则利用内存分配函数。文中还讨论了如何检查动态堆栈建立的成功与否。
任务堆栈的建立
分类:任务堆栈分为静态堆栈和动态堆栈,前者在编译时建立,后者在运行时建立
建立堆栈前要声明堆栈的类型,在UC/OS中堆栈的类型是两个32位的无符号整型变量,一个表示已经使用过的空间,一个表示未使用过的空间的大小
静态堆栈的建立 即建立一个堆栈型数组:static OS_STK MyTaskStack[stack_size] 或者OS_STK MyTaskStack[stack_size]
动态堆栈的建立                     :OS_TCK *p;
                                     p=(OS_TCK *)malloc(stack_size);
                                     if(p!=(OS_TAK *)0)         /*防止内存碎片过多而导致出现无法分配内存的情况*/
                                      {  Create the task;}
在建立任务时要注意,堆栈是从下往上增长还是从上往下减的,根据不同的方式,将栈顶传入任务的对应的参数中。

小结:堆栈建立:静态建立,动态建立
      对于动态建立,要进行动态建立是否成功的检查。

board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:138:34: error: expected ‘)’ before numeric constant gpio_direction_output(IOX_STCP, 1); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:140:2: error: expected identifier or ‘(’ before ‘for’ for (i = 7; i >= 0; i--) { ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:140:16: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘>=’ token for (i = 7; i >= 0; i--) { ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:140:23: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘--’ token for (i = 7; i >= 0; i--) { ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:147:34: error: expected ‘)’ before numeric constant gpio_direction_output(IOX_STCP, 0); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:148:9: error: expected declaration specifiers or ‘...’ before numeric constant udelay(500); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:152:34: error: expected ‘)’ before numeric constant gpio_direction_output(IOX_STCP, 1); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:153:1: error: expected identifier or ‘(’ before ‘}’ token }; ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c: In function ‘iox74lv_set’: board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:160:25: error: ‘IOX_SHCP’ undeclared (first use in this function) gpio_direction_output(IOX_SHCP, 0); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:160:25: note: each undeclared identifier is reported only once for each function it appears in board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:163:26: error: ‘IOX_SDI’ undeclared (first use in this function) gpio_direction_output(IOX_SDI, seq[qn_output[i]][0]); ^ board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.c:171:24: error: ‘IOX_STCP’ undeclared (first use in this function) gpio_direction_output(IOX_STCP, 0); ^ arm-linux-gnueabihf-gcc -Wp,-MD,drivers/mmc/.fsl_esdhc.o.d -nostdinc -isystem /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(fsl_esdhc)" -D"KBUILD_MODNAME=KBUILD_STR(fsl_esdhc)" -c -o drivers/mmc/fsl_esdhc.o drivers/mmc/fsl_esdhc.c arm-linux-gnueabihf-gcc -Wp,-MD,drivers/mmc/.mmc_write.o.d -nostdinc -isystem /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(mmc_write)" -D"KBUILD_MODNAME=KBUILD_STR(mmc_write)" -c -o drivers/mmc/mmc_write.o drivers/mmc/mmc_write.c scripts/Makefile.build:280: recipe for target 'board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.o' failed make[1]: *** [board/freescale/mx6ull_alientek_emmc/mx6ull_alientek_emmc.o] Error 1 make -f ./scripts/Makefile.build obj=drivers/mtd/spi arm-linux-gnueabihf-gcc -Wp,-MD,drivers/mmc/.mmc.o.d -nostdinc -isystem /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(mmc)" -D"KBUILD_MODNAME=KBUILD_STR(mmc)" -c -o drivers/mmc/mmc.o drivers/mmc/mmc.c rm -f drivers/mtd/onenand/built-in.o; arm-linux-gnueabihf-ar rcs drivers/mtd/onenand/built-in.o Makefile:1196: recipe for target 'board/freescale/mx6ull_alientek_emmc' failed make: *** [board/freescale/mx6ull_alientek_emmc] Error 2 make: *** 正在等待未完成的任务....
08-19
E (164) octal_psram: PSRAM ID read error: 0x00000000, PSRAM chip not found or not supported, or wrong PSRAM line mode E cpu_start: Failed to init external RAM! abort() was called at PC 0x403754f5 on core 0 --- 0x403754f5: call_start_cpu0 at E:/VSCode_Espressif/v5.4/esp-idf/components/esp_system/port/cpu_start.c:589 Backtrace: 0x40375c19:0x3fceb220 0x4037aca5:0x3fceb240 0x40381335:0x3fceb260 0x403754f5:0x3fceb2d0 0x403cca88:0x3fceb340 0x403ccec5:0x3fceb380 0x403c8991:0x3fceb4b0 0x40045c01:0x3fceb570 0x40043ab6:0x3fceb6f0 0x40034c45:0x3fceb710 --- Error: ClearCommError failed (PermissionError(13, '鎷掔粷璁块棶銆?', None, 5)) --- Waiting for the device to reconnect--- 0x40375c19: panic_abort at E:/VSCode_Espressif/v5.4/esp-idf/components/esp_system/panic.c:454 0x4037aca5: esp_system_abort at E:/VSCode_Espressif/v5.4/esp-idf/components/esp_system/port/esp_system_chip.c:92 0x40381335: abort at E:/VSCode_Espressif/v5.4/esp-idf/components/newlib/abort.c:38 0x403754f5: call_start_cpu0 at E:/VSCode_Espressif/v5.4/esp-idf/components/esp_system/port/cpu_start.c:589 0x40045c01: ets_run_flash_bootloader in ROM 0x40043ab6: main in ROM 0x40034c45: .stack_ok in ROM ELF file SHA256: Rebooting... ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0xc (RTC_SW_CPU_RST),boot:0x2b (SPI_FAST_FLASH_BOOT) Saved PC:0x40375b59 --- 0x40375b59: esp_restart_noos at E:/VSCode_Espressif/v5.4/esp-idf/components/esp_system/port/soc/esp32s3/system_internal.c:160 SPIWP:0xee mode:DIO, clock div:1 load:0x3fce2810,len:0x15a0 load:0x403c8700,len:0x4 load:0x403c8704,len:0xd20 load:0x403cb700,len:0x2ee4 entry 0x403c8928这个是什么问题
04-02
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值