# å†…æ ¸å¸¸è§é—®é¢˜ ## åŸºç¡€å†…æ ¸ ### LiteOS-Aå’ŒLiteOS-Må†…æ ¸å¯¹å¤–API的差异 åŸºç¡€å†…æ ¸APIå˜åœ¨å·®å¼‚,但是LiteOS-Aæä¾›æ ‡å‡†POSIX接å£ï¼ŒLiteOS-Mæä¾›æ ‡å‡†POSIXå’ŒCMSIS接å£ã€‚å¦‚æžœè¦æ”¯æŒè·¨å¹³å°ï¼Œä¸‰æ–¹é€‚é…建议使用POSIXç‰æ ‡å‡†æŽ¥å£ã€‚ ### 如何分æžçº¿ç¨‹æ ˆæº¢å‡º **问题现象** 系统异常,æç¤ºCURRENT task xxx stack overflowï¼ **解决措施** 1. 创建xxx线程的时候æˆå€åŠ å¤§æ ˆç©ºé—´ï¼Œå¤šæ¬¡å°è¯•如果问题ä¸å¤çŽ°ï¼Œåˆ™è¯´æ˜Žä»»åŠ¡æ ˆä¸å¤Ÿï¼Œéœ€è¦è°ƒæ•´ï¼› 2. 如果æˆå€åŠ å¤§çº¿ç¨‹æ ˆï¼Œé—®é¢˜ä¾æ—§å¤çŽ°ï¼Œåˆ™æŽ’æŸ¥xxxçº¿ç¨‹ä¸æ˜¯å¦å®šä¹‰è¶…大数组,或者æµç¨‹æ˜¯å¦å˜åœ¨é€’归调用; 3. ç¡®è®¤æ— å‰è¿°é—®é¢˜ï¼Œåˆ™éœ€è¦æŽ’查是å¦å˜åœ¨è¸©å†…å˜çš„æƒ…况。 ## 文件系统 ### Hi3516å¼€æºæ¿ä»¥å†™çš„æ¨¡å¼æ‰“å¼€åŒä¸€ä¸ªæ–‡ä»¶å¤±è´¥ï¼ˆLiteOS-A) Hi3516å¼€æºæ¿ä½¿ç”¨FAT文件系统,ä¸å…许该æ“作。 ### LiteOSå†…æ ¸å·²æ”¯æŒå“ªäº›ç¡¬ä»¶å¹³å° å¼€æºç‰ˆæœ¬LiteOS-A已支æŒHi3516/Hi3518开呿¿ï¼›LiteOS-M已支æŒHi3861开呿¿ã€STM32F103ã€é‡Žç«æŒ‘战者STM32F429IGTbã€Nucleo_f767ziç‰ï¼Œè¯¦ç»†æŸ¥çœ‹kernel/liteos_m目录下的README_zh.md文件。 ### LiteOSå†…æ ¸å·²æ”¯æŒå“ªå‡ 款芯片架构 LiteOS-M已支æŒrisc-vã€Cortex-m3\m4\m7\m33ã€arm9,待支æŒc-skyã€xtensaï¼›LiteOS-A已支æŒarmv7-a,待支æŒarmv8-a,请关注开æºç¤¾åŒºæ›´æ–°ã€‚ ## 三方组件 ### 已支æŒå“ªäº›ä¸‰æ–¹ç»„ä»¶ å·²æä¾›mbedtlsã€lwipç‰å¼€æºç»„件和三方库,å¯ä»¥ç›´æŽ¥ä½¿ç”¨ï¼›å¦å¤–æä¾›æ ‡å‡†çš„POSIX接å£ï¼Œå¯ä»¥è‡ªè¡Œé€‚é…。 ### 在上使用OpenSSLï¼Œå‡ºçŽ°ç§˜é’¥é•¿åº¦æ ¡éªŒä¸æ£ç¡® OpenSSL编译选项ä¸è¦æ³¨æ„架构类型(ARM,X86ç‰ï¼‰å’Œç³»ç»Ÿä½æ•°ï¼ˆ32ã€64ä½ï¼‰æ˜¯å¦é€‰æ‹©æ£ç¡®ã€‚ ### setsockoptæ˜¯å¦æ”¯æŒSO_RCVBUFå’ŒSO_SNDBUF选项 䏿”¯æŒã€‚ ## 编译链接 ### Arm Linuxå¼€å‘的应用程åºï¼Œå¦‚何在LiteOS-A上è¿è¡Œ 需è¦ç”¨å¼€æºç‰ˆæœ¬æä¾›çš„交å‰ç¼–è¯‘å™¨é‡æ–°ç¼–译应用程åºï¼Œæ‰å¯ä»¥è¿è¡Œã€‚ ### 在什么系统下编译,使用什么编译器 LiteOS-A在linux环境进行编译,使用LLVM编译器;LiteOS-M在Linux或Windows环境进行编译,使用IARã€Keilã€GCCç‰ç¼–译工具。 ### LiteOS-M上使用å•独编译æˆé™æ€åº“的三方组件,出现三方组件ä¸çš„全局å˜é‡å€¼ä¸æ£ç¡®ï¼Œæˆ–调用三方组件的函数åŽç³»ç»Ÿå¡æ» æ£€æŸ¥ä¸‰æ–¹ç»„ä»¶ç¼–è¯‘é€‰é¡¹ä¸æ˜¯å¦æœ‰-fPIE -fpie -fPIC -fpicç‰åœ°å€æ— å…³ç¼–è¯‘é€‰é¡¹ï¼Œå¦‚æžœæœ‰ï¼Œåˆ™åŽ»æŽ‰ï¼Œé‡æ–°ç¼–译æˆåº“使用。 ### LiteOS-A生æˆç›®æ ‡å¯æ‰§è¡Œæ–‡ä»¶æ—¶ï¼Œæç¤º use VFP register arguments,xxx.o does not 请确认xxx.oç¼–è¯‘æ—¶æ˜¯å¦æ·»åŠ -mfloat-abi=xxx -mcpu=xxx -mfpu=xxxç¼–è¯‘é€‰é¡¹ï¼Œè‹¥æ²¡æœ‰ï¼Œåˆ™éœ€è¦æ·»åŠ ã€‚ ### clock_gettime接å£èŽ·å–的时间打å°ä¸å¯¹ struct timespec结构ä¸tv_sec为time_t,而time_t为long longç±»åž‹ï¼Œæ‰“å°æŽ§åˆ¶ç¬¦ä¸º%lldï¼Œè¯·ç¡®è®¤å®žé™…æ‰“å°æŽ§åˆ¶ç¬¦æ˜¯å¦æ£ç¡®ã€‚