うおーるぼっとをWiiリモコンでコントロールする新しいプログラムです。 以前のものより、Wiiリモコンが早く繋がる様になりました。 It is a program which controls A with the Wii remote. ※ A Bluetooth dongle and a Wii remote control are needed.

Dependencies:   USBHost mbed FATFileSystem mbed-rtos

Committer:
jksoft
Date:
Mon Jun 10 16:01:50 2013 +0000
Revision:
0:fccb789424fc
1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jksoft 0:fccb789424fc 1 /*----------------------------------------------------------------------------
jksoft 0:fccb789424fc 2 * RL-ARM - RTX
jksoft 0:fccb789424fc 3 *----------------------------------------------------------------------------
jksoft 0:fccb789424fc 4 * Name: HAL_CM3.S
jksoft 0:fccb789424fc 5 * Purpose: Hardware Abstraction Layer for Cortex-M3
jksoft 0:fccb789424fc 6 * Rev.: V4.60
jksoft 0:fccb789424fc 7 *----------------------------------------------------------------------------
jksoft 0:fccb789424fc 8 *
jksoft 0:fccb789424fc 9 * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
jksoft 0:fccb789424fc 10 * All rights reserved.
jksoft 0:fccb789424fc 11 * Redistribution and use in source and binary forms, with or without
jksoft 0:fccb789424fc 12 * modification, are permitted provided that the following conditions are met:
jksoft 0:fccb789424fc 13 * - Redistributions of source code must retain the above copyright
jksoft 0:fccb789424fc 14 * notice, this list of conditions and the following disclaimer.
jksoft 0:fccb789424fc 15 * - Redistributions in binary form must reproduce the above copyright
jksoft 0:fccb789424fc 16 * notice, this list of conditions and the following disclaimer in the
jksoft 0:fccb789424fc 17 * documentation and/or other materials provided with the distribution.
jksoft 0:fccb789424fc 18 * - Neither the name of ARM nor the names of its contributors may be used
jksoft 0:fccb789424fc 19 * to endorse or promote products derived from this software without
jksoft 0:fccb789424fc 20 * specific prior written permission.
jksoft 0:fccb789424fc 21 *
jksoft 0:fccb789424fc 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
jksoft 0:fccb789424fc 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
jksoft 0:fccb789424fc 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
jksoft 0:fccb789424fc 25 * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
jksoft 0:fccb789424fc 26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
jksoft 0:fccb789424fc 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
jksoft 0:fccb789424fc 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
jksoft 0:fccb789424fc 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
jksoft 0:fccb789424fc 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
jksoft 0:fccb789424fc 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
jksoft 0:fccb789424fc 32 * POSSIBILITY OF SUCH DAMAGE.
jksoft 0:fccb789424fc 33 *---------------------------------------------------------------------------*/
jksoft 0:fccb789424fc 34
jksoft 0:fccb789424fc 35 .file "HAL_CM3.S"
jksoft 0:fccb789424fc 36 .syntax unified
jksoft 0:fccb789424fc 37
jksoft 0:fccb789424fc 38 .equ TCB_TSTACK, 36
jksoft 0:fccb789424fc 39
jksoft 0:fccb789424fc 40
jksoft 0:fccb789424fc 41 /*----------------------------------------------------------------------------
jksoft 0:fccb789424fc 42 * Functions
jksoft 0:fccb789424fc 43 *---------------------------------------------------------------------------*/
jksoft 0:fccb789424fc 44
jksoft 0:fccb789424fc 45 .thumb
jksoft 0:fccb789424fc 46
jksoft 0:fccb789424fc 47 .section ".text"
jksoft 0:fccb789424fc 48 .align 2
jksoft 0:fccb789424fc 49
jksoft 0:fccb789424fc 50
jksoft 0:fccb789424fc 51 /*--------------------------- rt_set_PSP ------------------------------------*/
jksoft 0:fccb789424fc 52
jksoft 0:fccb789424fc 53 # void rt_set_PSP (U32 stack);
jksoft 0:fccb789424fc 54
jksoft 0:fccb789424fc 55 .thumb_func
jksoft 0:fccb789424fc 56 .type rt_set_PSP, %function
jksoft 0:fccb789424fc 57 .global rt_set_PSP
jksoft 0:fccb789424fc 58 rt_set_PSP:
jksoft 0:fccb789424fc 59 .fnstart
jksoft 0:fccb789424fc 60 .cantunwind
jksoft 0:fccb789424fc 61
jksoft 0:fccb789424fc 62 MSR PSP,R0
jksoft 0:fccb789424fc 63 BX LR
jksoft 0:fccb789424fc 64
jksoft 0:fccb789424fc 65 .fnend
jksoft 0:fccb789424fc 66 .size rt_set_PSP, .-rt_set_PSP
jksoft 0:fccb789424fc 67
jksoft 0:fccb789424fc 68
jksoft 0:fccb789424fc 69 /*--------------------------- rt_get_PSP ------------------------------------*/
jksoft 0:fccb789424fc 70
jksoft 0:fccb789424fc 71 # U32 rt_get_PSP (void);
jksoft 0:fccb789424fc 72
jksoft 0:fccb789424fc 73 .thumb_func
jksoft 0:fccb789424fc 74 .type rt_get_PSP, %function
jksoft 0:fccb789424fc 75 .global rt_get_PSP
jksoft 0:fccb789424fc 76 rt_get_PSP:
jksoft 0:fccb789424fc 77 .fnstart
jksoft 0:fccb789424fc 78 .cantunwind
jksoft 0:fccb789424fc 79
jksoft 0:fccb789424fc 80 MRS R0,PSP
jksoft 0:fccb789424fc 81 BX LR
jksoft 0:fccb789424fc 82
jksoft 0:fccb789424fc 83 .fnend
jksoft 0:fccb789424fc 84 .size rt_get_PSP, .-rt_get_PSP
jksoft 0:fccb789424fc 85
jksoft 0:fccb789424fc 86
jksoft 0:fccb789424fc 87 /*--------------------------- os_set_env ------------------------------------*/
jksoft 0:fccb789424fc 88
jksoft 0:fccb789424fc 89 # void os_set_env (void);
jksoft 0:fccb789424fc 90 /* Switch to Unprivileged/Privileged Thread mode, use PSP. */
jksoft 0:fccb789424fc 91
jksoft 0:fccb789424fc 92 .thumb_func
jksoft 0:fccb789424fc 93 .type os_set_env, %function
jksoft 0:fccb789424fc 94 .global os_set_env
jksoft 0:fccb789424fc 95 os_set_env:
jksoft 0:fccb789424fc 96 .fnstart
jksoft 0:fccb789424fc 97 .cantunwind
jksoft 0:fccb789424fc 98
jksoft 0:fccb789424fc 99 MOV R0,SP /* PSP = MSP */
jksoft 0:fccb789424fc 100 MSR PSP,R0
jksoft 0:fccb789424fc 101 LDR R0,=os_flags
jksoft 0:fccb789424fc 102 LDRB R0,[R0]
jksoft 0:fccb789424fc 103 LSLS R0,#31
jksoft 0:fccb789424fc 104 ITE NE
jksoft 0:fccb789424fc 105 MOVNE R0,#0x02 /* Privileged Thread mode, use PSP */
jksoft 0:fccb789424fc 106 MOVEQ R0,#0x03 /* Unprivileged Thread mode, use PSP */
jksoft 0:fccb789424fc 107 MSR CONTROL,R0
jksoft 0:fccb789424fc 108 BX LR
jksoft 0:fccb789424fc 109
jksoft 0:fccb789424fc 110 .fnend
jksoft 0:fccb789424fc 111 .size os_set_env, .-os_set_env
jksoft 0:fccb789424fc 112
jksoft 0:fccb789424fc 113
jksoft 0:fccb789424fc 114 /*--------------------------- _alloc_box ------------------------------------*/
jksoft 0:fccb789424fc 115
jksoft 0:fccb789424fc 116 # void *_alloc_box (void *box_mem);
jksoft 0:fccb789424fc 117 /* Function wrapper for Unprivileged/Privileged mode. */
jksoft 0:fccb789424fc 118
jksoft 0:fccb789424fc 119 .thumb_func
jksoft 0:fccb789424fc 120 .type _alloc_box, %function
jksoft 0:fccb789424fc 121 .global _alloc_box
jksoft 0:fccb789424fc 122 _alloc_box:
jksoft 0:fccb789424fc 123 .fnstart
jksoft 0:fccb789424fc 124 .cantunwind
jksoft 0:fccb789424fc 125
jksoft 0:fccb789424fc 126 LDR R12,=rt_alloc_box
jksoft 0:fccb789424fc 127 MRS R3,IPSR
jksoft 0:fccb789424fc 128 LSLS R3,#24
jksoft 0:fccb789424fc 129 IT NE
jksoft 0:fccb789424fc 130 BXNE R12
jksoft 0:fccb789424fc 131 MRS R3,CONTROL
jksoft 0:fccb789424fc 132 LSLS R3,#31
jksoft 0:fccb789424fc 133 IT EQ
jksoft 0:fccb789424fc 134 BXEQ R12
jksoft 0:fccb789424fc 135 SVC 0
jksoft 0:fccb789424fc 136 BX LR
jksoft 0:fccb789424fc 137
jksoft 0:fccb789424fc 138 .fnend
jksoft 0:fccb789424fc 139 .size _alloc_box, .-_alloc_box
jksoft 0:fccb789424fc 140
jksoft 0:fccb789424fc 141
jksoft 0:fccb789424fc 142 /*--------------------------- _free_box -------------------------------------*/
jksoft 0:fccb789424fc 143
jksoft 0:fccb789424fc 144 # int _free_box (void *box_mem, void *box);
jksoft 0:fccb789424fc 145 /* Function wrapper for Unprivileged/Privileged mode. */
jksoft 0:fccb789424fc 146
jksoft 0:fccb789424fc 147 .thumb_func
jksoft 0:fccb789424fc 148 .type _free_box, %function
jksoft 0:fccb789424fc 149 .global _free_box
jksoft 0:fccb789424fc 150 _free_box:
jksoft 0:fccb789424fc 151 .fnstart
jksoft 0:fccb789424fc 152 .cantunwind
jksoft 0:fccb789424fc 153
jksoft 0:fccb789424fc 154 LDR R12,=rt_free_box
jksoft 0:fccb789424fc 155 MRS R3,IPSR
jksoft 0:fccb789424fc 156 LSLS R3,#24
jksoft 0:fccb789424fc 157 IT NE
jksoft 0:fccb789424fc 158 BXNE R12
jksoft 0:fccb789424fc 159 MRS R3,CONTROL
jksoft 0:fccb789424fc 160 LSLS R3,#31
jksoft 0:fccb789424fc 161 IT EQ
jksoft 0:fccb789424fc 162 BXEQ R12
jksoft 0:fccb789424fc 163 SVC 0
jksoft 0:fccb789424fc 164 BX LR
jksoft 0:fccb789424fc 165
jksoft 0:fccb789424fc 166 .fnend
jksoft 0:fccb789424fc 167 .size _free_box, .-_free_box
jksoft 0:fccb789424fc 168
jksoft 0:fccb789424fc 169
jksoft 0:fccb789424fc 170 /*-------------------------- SVC_Handler ------------------------------------*/
jksoft 0:fccb789424fc 171
jksoft 0:fccb789424fc 172 # void SVC_Handler (void);
jksoft 0:fccb789424fc 173
jksoft 0:fccb789424fc 174 .thumb_func
jksoft 0:fccb789424fc 175 .type SVC_Handler, %function
jksoft 0:fccb789424fc 176 .global SVC_Handler
jksoft 0:fccb789424fc 177 SVC_Handler:
jksoft 0:fccb789424fc 178 .fnstart
jksoft 0:fccb789424fc 179 .cantunwind
jksoft 0:fccb789424fc 180
jksoft 0:fccb789424fc 181 MRS R0,PSP /* Read PSP */
jksoft 0:fccb789424fc 182 LDR R1,[R0,#24] /* Read Saved PC from Stack */
jksoft 0:fccb789424fc 183 LDRB R1,[R1,#-2] /* Load SVC Number */
jksoft 0:fccb789424fc 184 CBNZ R1,SVC_User
jksoft 0:fccb789424fc 185
jksoft 0:fccb789424fc 186 LDM R0,{R0-R3,R12} /* Read R0-R3,R12 from stack */
jksoft 0:fccb789424fc 187 BLX R12 /* Call SVC Function */
jksoft 0:fccb789424fc 188
jksoft 0:fccb789424fc 189 MRS R12,PSP /* Read PSP */
jksoft 0:fccb789424fc 190 STM R12,{R0-R2} /* Store return values */
jksoft 0:fccb789424fc 191
jksoft 0:fccb789424fc 192 LDR R3,=os_tsk
jksoft 0:fccb789424fc 193 LDM R3,{R1,R2} /* os_tsk.run, os_tsk.new */
jksoft 0:fccb789424fc 194 CMP R1,R2
jksoft 0:fccb789424fc 195 BEQ SVC_Exit /* no task switch */
jksoft 0:fccb789424fc 196
jksoft 0:fccb789424fc 197 CBZ R1,SVC_Next /* Runtask deleted? */
jksoft 0:fccb789424fc 198 STMDB R12!,{R4-R11} /* Save Old context */
jksoft 0:fccb789424fc 199 STR R12,[R1,#TCB_TSTACK] /* Update os_tsk.run->tsk_stack */
jksoft 0:fccb789424fc 200
jksoft 0:fccb789424fc 201 PUSH {R2,R3}
jksoft 0:fccb789424fc 202 BL rt_stk_check /* Check for Stack overflow */
jksoft 0:fccb789424fc 203 POP {R2,R3}
jksoft 0:fccb789424fc 204
jksoft 0:fccb789424fc 205 SVC_Next:
jksoft 0:fccb789424fc 206 STR R2,[R3] /* os_tsk.run = os_tsk.new */
jksoft 0:fccb789424fc 207
jksoft 0:fccb789424fc 208 LDR R12,[R2,#TCB_TSTACK] /* os_tsk.new->tsk_stack */
jksoft 0:fccb789424fc 209 LDMIA R12!,{R4-R11} /* Restore New Context */
jksoft 0:fccb789424fc 210 MSR PSP,R12 /* Write PSP */
jksoft 0:fccb789424fc 211
jksoft 0:fccb789424fc 212 SVC_Exit:
jksoft 0:fccb789424fc 213 MVN LR,#~0xFFFFFFFD /* set EXC_RETURN value */
jksoft 0:fccb789424fc 214 BX LR
jksoft 0:fccb789424fc 215
jksoft 0:fccb789424fc 216 /*------------------- User SVC ------------------------------*/
jksoft 0:fccb789424fc 217
jksoft 0:fccb789424fc 218 SVC_User:
jksoft 0:fccb789424fc 219 PUSH {R4,LR} /* Save Registers */
jksoft 0:fccb789424fc 220 LDR R2,=SVC_Count
jksoft 0:fccb789424fc 221 LDR R2,[R2]
jksoft 0:fccb789424fc 222 CMP R1,R2
jksoft 0:fccb789424fc 223 BHI SVC_Done /* Overflow */
jksoft 0:fccb789424fc 224
jksoft 0:fccb789424fc 225 LDR R4,=SVC_Table-4
jksoft 0:fccb789424fc 226 LDR R4,[R4,R1,LSL #2] /* Load SVC Function Address */
jksoft 0:fccb789424fc 227
jksoft 0:fccb789424fc 228 LDM R0,{R0-R3,R12} /* Read R0-R3,R12 from stack */
jksoft 0:fccb789424fc 229 BLX R4 /* Call SVC Function */
jksoft 0:fccb789424fc 230
jksoft 0:fccb789424fc 231 MRS R12,PSP
jksoft 0:fccb789424fc 232 STM R12,{R0-R3} /* Function return values */
jksoft 0:fccb789424fc 233 SVC_Done:
jksoft 0:fccb789424fc 234 POP {R4,PC} /* RETI */
jksoft 0:fccb789424fc 235
jksoft 0:fccb789424fc 236 .fnend
jksoft 0:fccb789424fc 237 .size SVC_Handler, .-SVC_Handler
jksoft 0:fccb789424fc 238
jksoft 0:fccb789424fc 239
jksoft 0:fccb789424fc 240 /*-------------------------- PendSV_Handler ---------------------------------*/
jksoft 0:fccb789424fc 241
jksoft 0:fccb789424fc 242 # void PendSV_Handler (void);
jksoft 0:fccb789424fc 243
jksoft 0:fccb789424fc 244 .thumb_func
jksoft 0:fccb789424fc 245 .type PendSV_Handler, %function
jksoft 0:fccb789424fc 246 .global PendSV_Handler
jksoft 0:fccb789424fc 247 .global Sys_Switch
jksoft 0:fccb789424fc 248 PendSV_Handler:
jksoft 0:fccb789424fc 249 .fnstart
jksoft 0:fccb789424fc 250 .cantunwind
jksoft 0:fccb789424fc 251
jksoft 0:fccb789424fc 252 BL rt_pop_req
jksoft 0:fccb789424fc 253
jksoft 0:fccb789424fc 254 Sys_Switch:
jksoft 0:fccb789424fc 255 LDR R3,=os_tsk
jksoft 0:fccb789424fc 256 LDM R3,{R1,R2} /* os_tsk.run, os_tsk.new */
jksoft 0:fccb789424fc 257 CMP R1,R2
jksoft 0:fccb789424fc 258 BEQ Sys_Exit
jksoft 0:fccb789424fc 259
jksoft 0:fccb789424fc 260 MRS R12,PSP /* Read PSP */
jksoft 0:fccb789424fc 261 STMDB R12!,{R4-R11} /* Save Old context */
jksoft 0:fccb789424fc 262 STR R12,[R1,#TCB_TSTACK] /* Update os_tsk.run->tsk_stack */
jksoft 0:fccb789424fc 263
jksoft 0:fccb789424fc 264 PUSH {R2,R3}
jksoft 0:fccb789424fc 265 BL rt_stk_check /* Check for Stack overflow */
jksoft 0:fccb789424fc 266 POP {R2,R3}
jksoft 0:fccb789424fc 267
jksoft 0:fccb789424fc 268 STR R2,[R3] /* os_tsk.run = os_tsk.new */
jksoft 0:fccb789424fc 269
jksoft 0:fccb789424fc 270 LDR R12,[R2,#TCB_TSTACK] /* os_tsk.new->tsk_stack */
jksoft 0:fccb789424fc 271 LDMIA R12!,{R4-R11} /* Restore New Context */
jksoft 0:fccb789424fc 272 MSR PSP,R12 /* Write PSP */
jksoft 0:fccb789424fc 273
jksoft 0:fccb789424fc 274 Sys_Exit:
jksoft 0:fccb789424fc 275 MVN LR,#~0xFFFFFFFD /* set EXC_RETURN value */
jksoft 0:fccb789424fc 276 BX LR /* Return to Thread Mode */
jksoft 0:fccb789424fc 277
jksoft 0:fccb789424fc 278 .fnend
jksoft 0:fccb789424fc 279 .size PendSV_Handler, .-PendSV_Handler
jksoft 0:fccb789424fc 280
jksoft 0:fccb789424fc 281
jksoft 0:fccb789424fc 282 /*-------------------------- SysTick_Handler --------------------------------*/
jksoft 0:fccb789424fc 283
jksoft 0:fccb789424fc 284 # void SysTick_Handler (void);
jksoft 0:fccb789424fc 285
jksoft 0:fccb789424fc 286 .thumb_func
jksoft 0:fccb789424fc 287 .type SysTick_Handler, %function
jksoft 0:fccb789424fc 288 .global SysTick_Handler
jksoft 0:fccb789424fc 289 SysTick_Handler:
jksoft 0:fccb789424fc 290 .fnstart
jksoft 0:fccb789424fc 291 .cantunwind
jksoft 0:fccb789424fc 292
jksoft 0:fccb789424fc 293 BL rt_systick
jksoft 0:fccb789424fc 294 B Sys_Switch
jksoft 0:fccb789424fc 295
jksoft 0:fccb789424fc 296 .fnend
jksoft 0:fccb789424fc 297 .size SysTick_Handler, .-SysTick_Handler
jksoft 0:fccb789424fc 298
jksoft 0:fccb789424fc 299
jksoft 0:fccb789424fc 300 /*-------------------------- OS_Tick_Handler --------------------------------*/
jksoft 0:fccb789424fc 301
jksoft 0:fccb789424fc 302 # void OS_Tick_Handler (void);
jksoft 0:fccb789424fc 303
jksoft 0:fccb789424fc 304 .thumb_func
jksoft 0:fccb789424fc 305 .type OS_Tick_Handler, %function
jksoft 0:fccb789424fc 306 .global OS_Tick_Handler
jksoft 0:fccb789424fc 307 OS_Tick_Handler:
jksoft 0:fccb789424fc 308 .fnstart
jksoft 0:fccb789424fc 309 .cantunwind
jksoft 0:fccb789424fc 310
jksoft 0:fccb789424fc 311 BL os_tick_irqack
jksoft 0:fccb789424fc 312 BL rt_systick
jksoft 0:fccb789424fc 313 B Sys_Switch
jksoft 0:fccb789424fc 314
jksoft 0:fccb789424fc 315 .fnend
jksoft 0:fccb789424fc 316 .size OS_Tick_Handler, .-OS_Tick_Handler
jksoft 0:fccb789424fc 317
jksoft 0:fccb789424fc 318
jksoft 0:fccb789424fc 319 .end
jksoft 0:fccb789424fc 320
jksoft 0:fccb789424fc 321 /*----------------------------------------------------------------------------
jksoft 0:fccb789424fc 322 * end of file
jksoft 0:fccb789424fc 323 *---------------------------------------------------------------------------*/