⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nutentry.s

📁 含有完整TCP/IP PPP协议的嵌入式操作系统
💻 S
字号:
;***************************************************************************; KPIT Cummins Infosystems Ltd, Pune, India. - 7th July 2003.;; This program is distributed in the hope that it will be useful,; but WITHOUT ANY WARRANTY; without even the implied warranty of; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE;; Adapted to Nut/OS by Jan Dubiec <jdx@slackware.pl>;;***************************************************************************;; System initialisation routine - entry point for the application.; The stack pointer is initialised, then the hardware initialisation; routine called. If needed, the .text section is copied into RAM; and then the static data areas are initialised, before the main; function is executed. A simple exit funtion is also supplied.;;****************************************************************************	.h8300h	.section .init	.global _NutEntry	.global _NutExit	.extern _NutHWInit	.extern _NutInit	.extern ___data_start	.extern ___data_end	.extern ___bss_start	.extern ___bss_end	.extern ___mdata_end	.extern ___stack_NutEntry:	; initialise the stack pointer	mov.l #___stack, er7	; disable interrupts	orc.b #0xc0, ccr	; call the hardware initialisation routine	jsr @_NutHWInit#ifdef NUTDEBUG	; clear the whole internal RAM	mov.l #4, er3		; double word chunks 	mov.l #0, er2	mov.l #0xffff20, er1	; end of RAM	mov.l #0xffbf20, er0	; beginning of RAM	cmp.l er0, er1	beq start_c2start_c1:	mov.l er2, @er0	add.l er3, er0	cmp.l er0, er1		; dest == edata?	bne start_c1start_c2:#endif#ifdef ROMSTART#ifdef TEXT_IN_RAM /* program code should executed run from RAM*/	; get the boundaries for the .text and .data section initialisation	mov.l #___text_start, er0; source start address#else	; get the boundaries for the .data section initialisation	mov.l #___data_start, er0; source start address#endif /* TEXT_IN_RAM */	mov.l #___data_end, er1	; source end address	mov.l #___mdata_end, er2; destination address; see linker script	cmp.l er0,er1	beq start_1start_l:	mov.b @er2, r3l		; get from src	mov.b r3l, @er0		; place in dest	inc.l #1, er2		; inc src	inc.l #1, er0		; inc dest	cmp.l er0, er1		; dest == edata?	bne start_lstart_1:#endif /* ROMSTART */	; zero out .bss section	mov.l #___bss_start, er0	mov.l #___bss_end, er1	cmp.l er0, er1	beq start_3	sub.b r2l, r2lstart_2:	mov.b r2l, @er0	inc.l #1, er0	cmp.l er0, er1	bne start_2start_3:	; enable interrupts	andc.b #0x3f, ccr	; start Nut/OS	jsr @_NutInit	; jump to exit	mov.l er0, er4	jmp @_NutExit_NutExit:	nop	bra _NutExit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -