├── Assignments ├── .vscode │ └── settings.json ├── Ass. 1 │ ├── README.md │ ├── stats.c │ ├── stats.h │ └── stats.o ├── Ass.2 │ ├── include │ │ ├── CMSIS │ │ │ ├── cmsis_gcc.h │ │ │ ├── core_cm4.h │ │ │ ├── core_cmFunc.h │ │ │ ├── core_cmInstr.h │ │ │ └── core_cmSimd.h │ │ ├── common │ │ │ ├── memory.h │ │ │ └── platform.h │ │ └── msp432 │ │ │ ├── msp432p401r.h │ │ │ ├── msp_compatibility.h │ │ │ └── system_msp432p401r.h │ ├── msp432p401r.lds │ └── src │ │ ├── Makefile │ │ ├── interrupts_msp432p401r_gcc.c │ │ ├── main.c │ │ ├── memory.c │ │ ├── sources.mk │ │ ├── startup_msp432p401r_gcc.c │ │ └── system_msp432p401r.c └── Final Assignment │ ├── Makefile │ ├── include │ ├── CMSIS │ │ ├── cmsis_gcc.h │ │ ├── core_cm4.h │ │ ├── core_cmFunc.h │ │ ├── core_cmInstr.h │ │ └── core_cmSimd.h │ ├── common │ │ ├── course1.h │ │ ├── data.h │ │ ├── memory.h │ │ ├── platform.h │ │ └── stats.h │ └── msp432 │ │ ├── msp.h │ │ ├── msp432p401r.h │ │ ├── msp_compatibility.h │ │ └── system_msp432p401r.h │ ├── msp432p401r.lds │ ├── sources.mk │ └── src │ ├── course1.c │ ├── data.c │ ├── interrupts_msp432p401r_gcc.c │ ├── main.c │ ├── memory.c │ ├── startup_msp432p401r_gcc.c │ ├── stats.c │ └── system_msp432p401r.c ├── Certificate.pdf ├── Course Notes ├── 1- Embedded System Development Components │ ├── Images │ │ ├── ESDevelopmentPlatform.png │ │ ├── Ganssle'sExample1.png │ │ ├── Ganssle'sExample2.png │ │ ├── Ganssle'sExample3.png │ │ ├── MSP432.png │ │ ├── README.md │ │ ├── SCM Guidelines.png │ │ ├── androidRepo.png │ │ ├── appleSoftwareSupport.png │ │ ├── branches.png │ │ ├── branches2.png │ │ ├── chipErrata.png │ │ ├── collaboration.png │ │ ├── collaboration2.png │ │ ├── commit.png │ │ ├── deltas.png │ │ ├── electricalChars.png │ │ ├── gitLinuxPerspective.png │ │ ├── gitLog.png │ │ ├── gitWindowsPerspective.png │ │ ├── gitWorkflow.png │ │ ├── kl25zSchematic.png │ │ ├── legacySystems.png │ │ ├── onBoardDebugger.png │ │ ├── physicalSpecs.png │ │ ├── productBrief.png │ │ ├── referenceManual.png │ │ ├── repo.png │ │ ├── selectorGuide.png │ │ ├── softwareTools.png │ │ ├── thermalSpecs.png │ │ └── timingSpecs.png │ └── README.md ├── 2- Compilation with GCC and GNU Make │ ├── Images │ │ ├── CTS.png │ │ ├── CTS00.png │ │ ├── CTS01.png │ │ ├── IDEautoGeneration.png │ │ ├── LinkerscriptTest.png │ │ ├── NM.png │ │ ├── NM1.png │ │ ├── PHONY.png │ │ ├── README.md │ │ ├── Shell.png │ │ ├── abstractionInterface.png │ │ ├── abstractionInterface2.png │ │ ├── afterLinking.png │ │ ├── afterLocating.png │ │ ├── archFlags.png │ │ ├── assemblyTranslation.png │ │ ├── binutils.png │ │ ├── buildEnvironment.png │ │ ├── buildManually.png │ │ ├── buildProcess.png │ │ ├── buildingSW.png │ │ ├── compileTimeSwitch.png │ │ ├── compiler.png │ │ ├── constantExamples.png │ │ ├── crossCompilation.png │ │ ├── crossCompilation2.png │ │ ├── defundef.png │ │ ├── documenting.png │ │ ├── dynamic&Linking.png │ │ ├── dynamicLib.png │ │ ├── esDevPlatform.png │ │ ├── executableFileFormats.png │ │ ├── gccOptions.png │ │ ├── gccToolCheck.png │ │ ├── gdb.png │ │ ├── ifelse.png │ │ ├── ifelse2.png │ │ ├── include.png │ │ ├── include2.png │ │ ├── includeGuard.png │ │ ├── includeGuard1.png │ │ ├── includeGuard2.png │ │ ├── includeGuard3.png │ │ ├── includeGuard4.png │ │ ├── includeGuard5.png │ │ ├── includingStandardLibs.png │ │ ├── largeCommands.png │ │ ├── linkerError.png │ │ ├── linkerFlags.png │ │ ├── linkerFlags1.png │ │ ├── linkerscriptDetails.png │ │ ├── linkerscriptExample.png │ │ ├── linkerscriptExample1.png │ │ ├── macroFunction.png │ │ ├── macroFunctionsExample.png │ │ ├── macroIssues.png │ │ ├── macroSubstitution.png │ │ ├── makeAutomates.png │ │ ├── makeDefinition.png │ │ ├── makeDemo.png │ │ ├── makeDemo1.png │ │ ├── makeDemo2.png │ │ ├── makeDemo3.png │ │ ├── makeDemo4.png │ │ ├── makeDemo5.png │ │ ├── makeExample1.png │ │ ├── makeExample2.png │ │ ├── makeExample3.png │ │ ├── makeExample4.png │ │ ├── makeExample5.png │ │ ├── makeExample6.png │ │ ├── makefileSyntax.png │ │ ├── makefileTargets.png │ │ ├── makefileVariables.png │ │ ├── makefileVariables1.png │ │ ├── makefileVariables2.png │ │ ├── makefileVariables3.png │ │ ├── makefiles.png │ │ ├── makefilesRules.png │ │ ├── memoryMap.png │ │ ├── memoryMap1.png │ │ ├── memoryMap2.png │ │ ├── moduleDesign.png │ │ ├── nativeCompilation.png │ │ ├── objcopy.png │ │ ├── objdump.png │ │ ├── objdump1.png │ │ ├── overridingVariables.png │ │ ├── overridingVariables1.png │ │ ├── patternMatching.png │ │ ├── patternMatching1.png │ │ ├── pragma.png │ │ ├── pragma2.png │ │ ├── readelf.png │ │ ├── sizeUtil.png │ │ ├── specialVariables.png │ │ ├── static&Linking.png │ │ ├── staticLib.png │ │ ├── superMake.png │ │ ├── swTools.png │ │ ├── symbolsCompiler.png │ │ ├── toolchain.png │ │ └── typicalBuildProcess.png │ └── README.md └── 3- Memory Types, Segments and Management │ ├── Images │ ├── Access.png │ ├── CPURegisters.png │ ├── EEPROM.png │ ├── README.md │ ├── allocatedDataChars.png │ ├── armRegisters.png │ ├── armRegisters1.png │ ├── auto.png │ ├── bootloader.png │ ├── callingConvention.png │ ├── capacity.png │ ├── choosingPlatform.png │ ├── codeMemory.png │ ├── codeSubsegments.png │ ├── codeSubsegments2.png │ ├── const.png │ ├── dataAllocation.png │ ├── dataSegment.png │ ├── dataSegment2.png │ ├── dynamicAllocation.png │ ├── extern.png │ ├── extraEEPROM.png │ ├── extraEEPROM1.png │ ├── failedAllocation.png │ ├── failedAllocation1.png │ ├── failedAllocation2.png │ ├── free.png │ ├── heap.png │ ├── heap1.png │ ├── heapCons.png │ ├── heapFunctions.png │ ├── heapScope.png │ ├── hierarchy.png │ ├── init.png │ ├── init1.png │ ├── latency.png │ ├── linkerFile.png │ ├── linkerScript.png │ ├── linkerScript2.png │ ├── linkerfiles.png │ ├── locator.png │ ├── malloc.png │ ├── memoryController.png │ ├── memoryHierarchy.png │ ├── memoryMap.png │ ├── memoryModels.png │ ├── platform.png │ ├── ramVsFlash.png │ ├── realloc.png │ ├── register.png │ ├── registerContents.png │ ├── registerDefinitionFiles.png │ ├── registers.png │ ├── sizeof.png │ ├── stack.png │ ├── stackFrame.png │ ├── stackFrames.png │ ├── stackFrames1.png │ ├── stackGrowth.png │ ├── stackOperations.png │ ├── stackoverflow.png │ ├── static.png │ ├── storageClasses.png │ ├── subfamilies.png │ ├── subsegments.png │ ├── textSection.png │ ├── typeModifiers.png │ ├── typeQualifiers.png │ ├── typeQualifiers1.png │ ├── variableTypes.png │ ├── vectorTable.png │ └── vectorTable1.png │ └── README.md ├── Images ├── README.md └── copyright.png └── README.md /Assignments/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.associations": { 3 | "*.tcc": "c", 4 | "cmath": "c" 5 | } 6 | } -------------------------------------------------------------------------------- /Assignments/Ass. 1/README.md: -------------------------------------------------------------------------------- 1 | This repo contains the assessment 1 files that represents a simple program to do some operations on a given array, the assessment requires the code to be well documented and also to use the git version control. 2 | 3 | Author: Mohammed Abdelalim 4 | -------------------------------------------------------------------------------- /Assignments/Ass. 1/stats.c: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | /** 12 | * @file stats.c 13 | * @brief The implementation file of the c1m1 assignment 14 | * 15 | * This file includes all the required functions implementations in the c1m1 assignment 16 | * 17 | * @author Mohammed Abdelalim 18 | * @date 7/9/2020 19 | * 20 | */ 21 | 22 | 23 | 24 | #include 25 | #include "stats.h" 26 | 27 | /* Size of the Data Set */ 28 | #define SIZE (40) 29 | 30 | void main() { 31 | 32 | unsigned char test[SIZE] = { 34, 201, 190, 154, 8, 194, 2, 6, 33 | 114, 88, 45, 76, 123, 87, 25, 23, 34 | 200, 122, 150, 90, 92, 87, 177, 244, 35 | 201, 6, 12, 60, 8, 2, 5, 67, 36 | 7, 87, 250, 230, 99, 3, 100, 90}; 37 | 38 | /* Other Variable Declarations Go Here */ 39 | unsigned char minimum = 0; 40 | unsigned char maximum = 0; 41 | float mean = 0; 42 | unsigned char median = 0; 43 | 44 | /* Statistics and Printing Functions Go Here */ 45 | printf("Array before sorting: \n"); 46 | print_array(&test, SIZE); 47 | median = find_median(&test, SIZE); 48 | mean = find_mean(&test, SIZE); 49 | maximum = find_maximum(&test, SIZE); 50 | minimum = find_minimum(&test, SIZE); 51 | print_statistics(minimum, maximum, mean, median); 52 | sort_array(&test, SIZE); 53 | printf("Array after sorting: \n"); 54 | print_array(&test, SIZE); 55 | } 56 | 57 | void print_statistics (unsigned char minimum, unsigned char maximum, float mean, unsigned char median){ 58 | printf("The minimum is %d \n", minimum); 59 | printf("The maximum is %d \n", maximum); 60 | printf("The mean is %f \n", mean); 61 | printf("The median is %d \n", median); 62 | } 63 | 64 | 65 | void print_array (unsigned char *array, unsigned int counter){ 66 | for (int i=0; i maximum){ 93 | maximum = *(array + i); 94 | } 95 | else {} // do nothing. 96 | } 97 | return maximum; 98 | } 99 | 100 | unsigned char find_minimum (unsigned char *array, unsigned int counter){ 101 | unsigned char minimum = *array; // initalize the minimum variable with the value of the first array element 102 | for (int i=1; i array[index +1] || array[index] == array[index +1]) { 118 | continue; 119 | } 120 | else if (array[index] < array[index +1]) { 121 | //swap elements// 122 | temp = array[index]; 123 | array[index] = array[index+1]; 124 | array[index+1] = temp; 125 | 126 | flag = 1; // a swap process has occurred at least once in this loop 127 | } 128 | } 129 | } 130 | while (flag ==1); // the array is not sorted as long as a swap operation is occurred at least once 131 | } 132 | -------------------------------------------------------------------------------- /Assignments/Ass. 1/stats.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | /** 12 | * @file stats.h 13 | * @brief Definitions and macros required for the c1m1 assignment 14 | * 15 | * 16 | * @author Mohammed Abdelalim 17 | * @date 7/9/2020 18 | * 19 | */ 20 | #ifndef __STATS_H__ 21 | #define __STATS_H__ 22 | 23 | /** 24 | * @brief Prints the statistics of a given array 25 | * 26 | * This function takes the resulting statistics done on an array 27 | * which are: minimum, maximum, mean and median, and print those 28 | * values on the screen 29 | * 30 | * @param minimum The minimum number of the given array 31 | * @param maximum The maximum number of the given array 32 | * @param mean The mean of the given array 33 | * @param median The median of the given array 34 | * 35 | * @return void 36 | */ 37 | void print_statistics (unsigned char minimum, unsigned char maximum, float mean, unsigned char median); 38 | 39 | 40 | /** 41 | * @brief Prints the contents of a given array 42 | * 43 | * This function takes the given array and prints it to the 44 | * screen. 45 | * 46 | * @param array The first element of the array to be printed on the screen 47 | * 48 | * @return void 49 | */ 50 | void print_array (unsigned char *array, unsigned int counter); 51 | 52 | 53 | /** 54 | * @brief Finds the median of the given array 55 | * 56 | * This function takes the given array and finds 57 | * its median. 58 | * 59 | * @param array The first element of the array to be processed 60 | * @param 61 | * 62 | * @return median The median value of the given array. 63 | */ 64 | unsigned char find_median (unsigned char *array, unsigned int counter); 65 | 66 | /** 67 | * @brief Finds the mean of the given array 68 | * 69 | * This function takes the given array and finds 70 | * its mean. 71 | * 72 | * @param array The first element of the array to be processed 73 | * 74 | * @return mean The mean value of the given array. 75 | */ 76 | float find_mean (unsigned char *array, unsigned int counter); 77 | 78 | /** 79 | * @brief Finds the maximum of the given array 80 | * 81 | * This function takes the given array and finds 82 | * its maximum. 83 | * 84 | * @param array The first element of the array to be processed 85 | * 86 | * @return maximum The maximum value of the given array. 87 | */ 88 | unsigned char find_maximum (unsigned char *array, unsigned int counter); 89 | 90 | /** 91 | * @brief Finds the minimum of the given array 92 | * 93 | * This function takes the given array and finds 94 | * its minimum. 95 | * 96 | * @param array The first element of the array to be processed 97 | * 98 | * @return minimum The minimum value of the given array. 99 | */ 100 | unsigned char find_minimum (unsigned char *array, unsigned int counter); 101 | 102 | /** 103 | * @brief Sorts the given array from the largest to smallest 104 | * 105 | * This function takes the given array and its length, sorts 106 | * the array from the largest to smallest using bubble sort and returns the 107 | * sorted array. 108 | * 109 | * @param array The first element of the array to be processed 110 | * 111 | * @return median The median value of the given array. 112 | */ 113 | void sort_array (unsigned char *array, unsigned int counter); 114 | 115 | #endif /* __STATS_H__ */ 116 | -------------------------------------------------------------------------------- /Assignments/Ass. 1/stats.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Assignments/Ass. 1/stats.o -------------------------------------------------------------------------------- /Assignments/Ass.2/include/CMSIS/core_cmFunc.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file core_cmFunc.h 3 | * @brief CMSIS Cortex-M Core Function Access Header File 4 | * @version V4.30 5 | * @date 20. October 2015 6 | ******************************************************************************/ 7 | /* Copyright (c) 2009 - 2015 ARM LIMITED 8 | 9 | All rights reserved. 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | - Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | - Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in the 16 | documentation and/or other materials provided with the distribution. 17 | - Neither the name of ARM nor the names of its contributors may be used 18 | to endorse or promote products derived from this software without 19 | specific prior written permission. 20 | * 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | ---------------------------------------------------------------------------*/ 33 | 34 | 35 | #if defined ( __ICCARM__ ) 36 | #pragma system_include /* treat file as system include file for MISRA check */ 37 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 38 | #pragma clang system_header /* treat file as system include file */ 39 | #endif 40 | 41 | #ifndef __CORE_CMFUNC_H 42 | #define __CORE_CMFUNC_H 43 | 44 | 45 | /* ########################### Core Function Access ########################### */ 46 | /** \ingroup CMSIS_Core_FunctionInterface 47 | \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions 48 | @{ 49 | */ 50 | 51 | /*------------------ RealView Compiler -----------------*/ 52 | #if defined ( __CC_ARM ) 53 | #include "cmsis_armcc.h" 54 | 55 | /*------------------ ARM Compiler V6 -------------------*/ 56 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 57 | #include "cmsis_armcc_V6.h" 58 | 59 | /*------------------ GNU Compiler ----------------------*/ 60 | #elif defined ( __GNUC__ ) 61 | #include "cmsis_gcc.h" 62 | 63 | /*------------------ ICC Compiler ----------------------*/ 64 | #elif defined ( __ICCARM__ ) 65 | #include 66 | 67 | /*------------------ TI CCS Compiler -------------------*/ 68 | #elif defined ( __TMS470__ ) 69 | #include 70 | 71 | /*------------------ TASKING Compiler ------------------*/ 72 | #elif defined ( __TASKING__ ) 73 | /* 74 | * The CMSIS functions have been implemented as intrinsics in the compiler. 75 | * Please use "carm -?i" to get an up to date list of all intrinsics, 76 | * Including the CMSIS ones. 77 | */ 78 | 79 | /*------------------ COSMIC Compiler -------------------*/ 80 | #elif defined ( __CSMC__ ) 81 | #include 82 | 83 | #endif 84 | 85 | /*@} end of CMSIS_Core_RegAccFunctions */ 86 | 87 | #endif /* __CORE_CMFUNC_H */ 88 | -------------------------------------------------------------------------------- /Assignments/Ass.2/include/CMSIS/core_cmInstr.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file core_cmInstr.h 3 | * @brief CMSIS Cortex-M Core Instruction Access Header File 4 | * @version V4.30 5 | * @date 20. October 2015 6 | ******************************************************************************/ 7 | /* Copyright (c) 2009 - 2015 ARM LIMITED 8 | 9 | All rights reserved. 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | - Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | - Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in the 16 | documentation and/or other materials provided with the distribution. 17 | - Neither the name of ARM nor the names of its contributors may be used 18 | to endorse or promote products derived from this software without 19 | specific prior written permission. 20 | * 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | ---------------------------------------------------------------------------*/ 33 | 34 | 35 | #if defined ( __ICCARM__ ) 36 | #pragma system_include /* treat file as system include file for MISRA check */ 37 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 38 | #pragma clang system_header /* treat file as system include file */ 39 | #endif 40 | 41 | #ifndef __CORE_CMINSTR_H 42 | #define __CORE_CMINSTR_H 43 | 44 | 45 | /* ########################## Core Instruction Access ######################### */ 46 | /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface 47 | Access to dedicated instructions 48 | @{ 49 | */ 50 | 51 | /*------------------ RealView Compiler -----------------*/ 52 | #if defined ( __CC_ARM ) 53 | #include "cmsis_armcc.h" 54 | 55 | /*------------------ ARM Compiler V6 -------------------*/ 56 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 57 | #include "cmsis_armcc_V6.h" 58 | 59 | /*------------------ GNU Compiler ----------------------*/ 60 | #elif defined ( __GNUC__ ) 61 | #include "cmsis_gcc.h" 62 | 63 | /*------------------ ICC Compiler ----------------------*/ 64 | #elif defined ( __ICCARM__ ) 65 | #include 66 | 67 | /*------------------ TI CCS Compiler -------------------*/ 68 | #elif defined ( __TMS470__ ) 69 | #include 70 | 71 | /*------------------ TASKING Compiler ------------------*/ 72 | #elif defined ( __TASKING__ ) 73 | /* 74 | * The CMSIS functions have been implemented as intrinsics in the compiler. 75 | * Please use "carm -?i" to get an up to date list of all intrinsics, 76 | * Including the CMSIS ones. 77 | */ 78 | 79 | /*------------------ COSMIC Compiler -------------------*/ 80 | #elif defined ( __CSMC__ ) 81 | #include 82 | 83 | #endif 84 | 85 | /*@}*/ /* end of group CMSIS_Core_InstructionInterface */ 86 | 87 | #endif /* __CORE_CMINSTR_H */ 88 | -------------------------------------------------------------------------------- /Assignments/Ass.2/include/CMSIS/core_cmSimd.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file core_cmSimd.h 3 | * @brief CMSIS Cortex-M SIMD Header File 4 | * @version V4.30 5 | * @date 20. October 2015 6 | ******************************************************************************/ 7 | /* Copyright (c) 2009 - 2015 ARM LIMITED 8 | 9 | All rights reserved. 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | - Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | - Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in the 16 | documentation and/or other materials provided with the distribution. 17 | - Neither the name of ARM nor the names of its contributors may be used 18 | to endorse or promote products derived from this software without 19 | specific prior written permission. 20 | * 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | ---------------------------------------------------------------------------*/ 33 | 34 | 35 | #if defined ( __ICCARM__ ) 36 | #pragma system_include /* treat file as system include file for MISRA check */ 37 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 38 | #pragma clang system_header /* treat file as system include file */ 39 | #endif 40 | 41 | #ifndef __CORE_CMSIMD_H 42 | #define __CORE_CMSIMD_H 43 | 44 | #ifdef __cplusplus 45 | extern "C" { 46 | #endif 47 | 48 | 49 | /* ################### Compiler specific Intrinsics ########################### */ 50 | /** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics 51 | Access to dedicated SIMD instructions 52 | @{ 53 | */ 54 | 55 | /*------------------ RealView Compiler -----------------*/ 56 | #if defined ( __CC_ARM ) 57 | #include "cmsis_armcc.h" 58 | 59 | /*------------------ ARM Compiler V6 -------------------*/ 60 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 61 | #include "cmsis_armcc_V6.h" 62 | 63 | /*------------------ GNU Compiler ----------------------*/ 64 | #elif defined ( __GNUC__ ) 65 | #include "cmsis_gcc.h" 66 | 67 | /*------------------ ICC Compiler ----------------------*/ 68 | #elif defined ( __ICCARM__ ) 69 | #include 70 | 71 | /*------------------ TI CCS Compiler -------------------*/ 72 | #elif defined ( __TMS470__ ) 73 | #include 74 | 75 | /*------------------ TASKING Compiler ------------------*/ 76 | #elif defined ( __TASKING__ ) 77 | /* 78 | * The CMSIS functions have been implemented as intrinsics in the compiler. 79 | * Please use "carm -?i" to get an up to date list of all intrinsics, 80 | * Including the CMSIS ones. 81 | */ 82 | 83 | /*------------------ COSMIC Compiler -------------------*/ 84 | #elif defined ( __CSMC__ ) 85 | #include 86 | 87 | #endif 88 | 89 | /*@} end of group CMSIS_SIMD_intrinsics */ 90 | 91 | 92 | #ifdef __cplusplus 93 | } 94 | #endif 95 | 96 | #endif /* __CORE_CMSIMD_H */ 97 | -------------------------------------------------------------------------------- /Assignments/Ass.2/include/common/memory.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | /** 12 | * @file memory.h 13 | * @brief Abstraction of memory read and write operations 14 | * 15 | * This header file provides an abstraction of reading and 16 | * writing to memory via function calls. 17 | * 18 | * @author Alex Fosdick 19 | * @date April 1 2017 20 | * 21 | */ 22 | #ifndef __MEMORY_H__ 23 | #define __MEMORY_H__ 24 | 25 | /** 26 | * @brief Sets a value of a data array 27 | * 28 | * Given a pointer to a char data set, this will set a provided 29 | * index into that data set to the value provided. 30 | * 31 | * @param ptr Pointer to data array 32 | * @param index Index into pointer array to set value 33 | * @param value value to write the the locaiton 34 | * 35 | * @return void. 36 | */ 37 | void set_value(char * ptr, unsigned int index, char value); 38 | 39 | /** 40 | * @brief Clear a value of a data array 41 | * 42 | * Given a pointer to a char data set, this will clear a provided 43 | * index into that data set to the value zero. 44 | * 45 | * @param ptr Pointer to data array 46 | * @param index Index into pointer array to set value 47 | * 48 | * @return void. 49 | */ 50 | void clear_value(char * ptr, unsigned int index); 51 | 52 | /** 53 | * @brief Returns a value of a data array 54 | * 55 | * Given a pointer to a char data set, this will read the provided 56 | * index into that data set and return the value. 57 | * 58 | * @param ptr Pointer to data array 59 | * @param index Index into pointer array to set value 60 | * 61 | * @return Value to be read. 62 | */ 63 | char get_value(char * ptr, unsigned int index); 64 | 65 | /** 66 | * @brief Sets data array elements to a value 67 | * 68 | * Given a pointer to a char data set, this will set a number of elements 69 | * from a provided data array to the given value. The length is determined 70 | * by the provided size parameter. 71 | * 72 | * @param ptr Pointer to data array 73 | * @param value value to write the the locaiton 74 | * @param size Number of elements to set to value 75 | * 76 | * @return void. 77 | */ 78 | void set_all(char * ptr, char value, unsigned int size); 79 | 80 | /** 81 | * @brief Clears elements in a data array 82 | * 83 | * Given a pointer to a char data set, this will set a clear a number 84 | * of elements given the size provided. Clear means to set to zero. 85 | * 86 | * @param ptr Pointer to data array 87 | * @param size Number of elements to set to zero 88 | * 89 | * @return void. 90 | */ 91 | void clear_all(char * ptr, unsigned int size); 92 | 93 | #endif /* __MEMORY_H__ */ 94 | -------------------------------------------------------------------------------- /Assignments/Ass.2/include/common/platform.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | #ifndef __PLATFORM_H__ 12 | #define __PLATFORM_H__ 13 | 14 | /****************************************************************************** 15 | Platform - MSP432 16 | ******************************************************************************/ 17 | #if defined (MSP432) 18 | #include "../msp432/msp432p401r.h" 19 | #define PRINTF(...) 20 | /****************************************************************************** 21 | Platform - HOST 22 | ******************************************************************************/ 23 | #elif defined (HOST) 24 | #include 25 | #define PRINTF(...) printf(__VA_ARGS__) 26 | /****************************************************************************** 27 | Platform - Unsupported 28 | ******************************************************************************/ 29 | #else 30 | #error "Platform provided is not supported in this Build System" 31 | #endif 32 | 33 | #endif /* __PLATFORM_H__ */ 34 | 35 | -------------------------------------------------------------------------------- /Assignments/Ass.2/include/msp432/msp_compatibility.h: -------------------------------------------------------------------------------- 1 | //***************************************************************************** 2 | // 3 | // Copyright (C) 2013 - 2015 Texas Instruments Incorporated - http://www.ti.com/ 4 | // 5 | // Redistribution and use in source and binary forms, with or without 6 | // modification, are permitted provided that the following conditions 7 | // are met: 8 | // 9 | // Redistributions of source code must retain the above copyright 10 | // notice, this list of conditions and the following disclaimer. 11 | // 12 | // Redistributions in binary form must reproduce the above copyright 13 | // notice, this list of conditions and the following disclaimer in the 14 | // documentation and/or other materials provided with the 15 | // distribution. 16 | // 17 | // Neither the name of Texas Instruments Incorporated nor the names of 18 | // its contributors may be used to endorse or promote products derived 19 | // from this software without specific prior written permission. 20 | // 21 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | // 33 | // MSP430 intrinsic redefinitions for use with MSP432 Family Devices 34 | // 35 | //**************************************************************************** 36 | 37 | /****************************************************************************** 38 | * Definitions for 8/16/32-bit wide memory access * 39 | ******************************************************************************/ 40 | #define HWREG8(x) (*((volatile uint8_t *)(x))) 41 | #define HWREG16(x) (*((volatile uint16_t *)(x))) 42 | #define HWREG32(x) (*((volatile uint32_t *)(x))) 43 | #define HWREG(x) (HWREG16(x)) 44 | #define HWREG8_L(x) (*((volatile uint8_t *)((uint8_t *)&x))) 45 | #define HWREG8_H(x) (*((volatile uint8_t *)(((uint8_t *)&x)+1))) 46 | #define HWREG16_L(x) (*((volatile uint16_t *)((uint16_t *)&x))) 47 | #define HWREG16_H(x) (*((volatile uint16_t *)(((uint16_t *)&x)+1))) 48 | 49 | /****************************************************************************** 50 | * Definitions for 8/16/32-bit wide bit band access * 51 | ******************************************************************************/ 52 | #define HWREGBIT8(x, b) (HWREG8(((uint32_t)(x) & 0xF0000000) | 0x02000000 | (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))) 53 | #define HWREGBIT16(x, b) (HWREG16(((uint32_t)(x) & 0xF0000000) | 0x02000000 | (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))) 54 | #define HWREGBIT32(x, b) (HWREG32(((uint32_t)(x) & 0xF0000000) | 0x02000000 | (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))) 55 | 56 | #undef __wfi 57 | #define __wfi() __asm(" wfi") 58 | #define __sleep() __wfi() 59 | #define __deep_sleep() { (*((volatile uint32_t *)(0xE000ED10))) |= 0x00000004; __wfi(); (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000004; } 60 | #define __low_power_mode_off_on_exit() { (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000002; } 61 | #define __get_SP_register() __get_MSP() 62 | #define __set_SP_register(x) __set_MSP(x) 63 | #define __get_interrupt_state() __get_PRIMASK() 64 | #define __set_interrupt_state(x) __set_PRIMASK(x) 65 | #define __enable_interrupt() __asm(" cpsie i") 66 | #define __enable_interrupts() __asm(" cpsie i") 67 | #define __disable_interrupt() __asm(" cpsid i") 68 | #define __disable_interrupts() __asm(" cpsid i") 69 | #define __no_operation() __asm(" nop") 70 | 71 | // Intrinsics without ARM equivalents 72 | #define __bcd_add_short(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 73 | #define __bcd_add_long(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 74 | #define __bcd_add_long_long(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 75 | #define __even_in_range(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 76 | #define __data20_write_char(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 77 | #define __data20_write_short(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 78 | #define __data20_write_long(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 79 | #define __never_executed() { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 80 | #define __op_code() { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 81 | #define __code_distance() { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 82 | #define __bic_SR_register(x) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 83 | #define __bis_SR_register(x) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 84 | #define __bis_SR_register_on_exit(x) { while(1); /* Using not-supported MSP430 intrinsic. Recommended to write to SCS_SCR register. */ } 85 | #define __bic_SR_register_on_exit(x) { while(1); /* Using not-supported MSP430 intrinsic. Recommended to write to SCS_SCR register. */ } 86 | #define __delay_cycles(x) { while(1); /* Using not-supported MSP430 intrinsic. Recommended to use a timer or a custom for loop. */ } 87 | 88 | // Intrinsics without ARM equivalents 89 | #define __low_power_mode_0() { __sleep(); } 90 | #define __low_power_mode_1() { __sleep(); } 91 | #define __low_power_mode_2() { __sleep(); } 92 | #define __low_power_mode_3() { __deep_sleep(); } 93 | #define __low_power_mode_4() { __deep_sleep(); } 94 | #define __data16_read_addr(x) (*((volatile uint32_t *)(x))) 95 | #define __data20_read_char(x) (*((volatile uint8_t *)(x))) 96 | #define __data20_read_short(x) (*((volatile uint16_t *)(x))) 97 | #define __data20_read_long(x) (*((volatile uint32_t *)(x))) 98 | #define __data16_write_addr(x,y) { (*((volatile uint32_t *)(x))) } 99 | #define __get_SR_register() 0 100 | #define __get_SR_register_on_exit() 0 101 | -------------------------------------------------------------------------------- /Assignments/Ass.2/include/msp432/system_msp432p401r.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file system_msp432p401r.h 3 | * @brief CMSIS Cortex-M4F Device Peripheral Access Layer Header File for 4 | * MSP432P401R 5 | * @version 2.200 6 | * @date 2016-05-09 7 | * 8 | * @note View configuration instructions embedded in comments 9 | * 10 | ******************************************************************************/ 11 | //***************************************************************************** 12 | // 13 | // Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ 14 | // 15 | // Redistribution and use in source and binary forms, with or without 16 | // modification, are permitted provided that the following conditions 17 | // are met: 18 | // 19 | // Redistributions of source code must retain the above copyright 20 | // notice, this list of conditions and the following disclaimer. 21 | // 22 | // Redistributions in binary form must reproduce the above copyright 23 | // notice, this list of conditions and the following disclaimer in the 24 | // documentation and/or other materials provided with the 25 | // distribution. 26 | // 27 | // Neither the name of Texas Instruments Incorporated nor the names of 28 | // its contributors may be used to endorse or promote products derived 29 | // from this software without specific prior written permission. 30 | // 31 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 34 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 36 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 37 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 38 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 39 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 40 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 41 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 42 | // 43 | //***************************************************************************** 44 | 45 | #ifndef SYSTEM_MSP432P401R_H 46 | #define SYSTEM_MSP432P401R_H 47 | 48 | #ifdef __cplusplus 49 | extern "C" { 50 | #endif 51 | 52 | #include 53 | 54 | extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ 55 | 56 | 57 | /** 58 | * Initialize the system 59 | * 60 | * @param none 61 | * @return none 62 | * 63 | * @brief Setup the microcontroller system. 64 | * 65 | * Performs the following initialization steps: 66 | * 1. Enables the FPU 67 | * 2. Halts the WDT 68 | * 3. Enables all SRAM banks 69 | * 4. Sets up power __REGULATOR and VCORE 70 | * 5. Enable Flash wait states if needed 71 | * 6. Change MCLK to desired frequency 72 | * 7. Enable Flash read buffering 73 | */ 74 | extern void SystemInit (void); 75 | 76 | /** 77 | * Update SystemCoreClock variable 78 | * 79 | * @param none 80 | * @return none 81 | * 82 | * @brief Updates the SystemCoreClock with current core Clock 83 | * retrieved from cpu registers. 84 | */ 85 | extern void SystemCoreClockUpdate (void); 86 | 87 | #ifdef __cplusplus 88 | } 89 | #endif 90 | 91 | #endif /* SYSTEM_MSP432P401R_H */ 92 | 93 | -------------------------------------------------------------------------------- /Assignments/Ass.2/msp432p401r.lds: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * 3 | * Copyright (C) 2012 - 2016 Texas Instruments Incorporated - http://www.ti.com/ 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 9 | * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the 15 | * distribution. 16 | * 17 | * Neither the name of Texas Instruments Incorporated nor the names of 18 | * its contributors may be used to endorse or promote products derived 19 | * from this software without specific prior written permission. 20 | * 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | * 33 | * GCC linker script for Texas Instruments MSP432P401R 34 | * 35 | * File creation date: 2016-05-09 36 | * 37 | ******************************************************************************/ 38 | 39 | MEMORY 40 | { 41 | MAIN_FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x00040000 42 | INFO_FLASH (RX) : ORIGIN = 0x00200000, LENGTH = 0x00004000 43 | SRAM_CODE (RWX): ORIGIN = 0x01000000, LENGTH = 0x00010000 44 | SRAM_DATA (RW) : ORIGIN = 0x20000000, LENGTH = 0x00010000 45 | } 46 | 47 | REGION_ALIAS("REGION_TEXT", MAIN_FLASH); 48 | REGION_ALIAS("REGION_INFO", INFO_FLASH); 49 | REGION_ALIAS("REGION_BSS", SRAM_DATA); 50 | REGION_ALIAS("REGION_DATA", SRAM_DATA); 51 | REGION_ALIAS("REGION_STACK", SRAM_DATA); 52 | REGION_ALIAS("REGION_HEAP", SRAM_DATA); 53 | REGION_ALIAS("REGION_ARM_EXIDX", MAIN_FLASH); 54 | REGION_ALIAS("REGION_ARM_EXTAB", MAIN_FLASH); 55 | 56 | SECTIONS { 57 | 58 | /* section for the interrupt vector area */ 59 | PROVIDE (_intvecs_base_address = 60 | DEFINED(_intvecs_base_address) ? _intvecs_base_address : 0x0); 61 | 62 | .intvecs (_intvecs_base_address) : AT (_intvecs_base_address) { 63 | KEEP (*(.intvecs)) 64 | } > REGION_TEXT 65 | 66 | /* The following three sections show the usage of the INFO flash memory */ 67 | /* INFO flash memory is intended to be used for the following */ 68 | /* device specific purposes: */ 69 | /* Flash mailbox for device security operations */ 70 | PROVIDE (_mailbox_base_address = 0x200000); 71 | 72 | .flashMailbox (_mailbox_base_address) : AT (_mailbox_base_address) { 73 | KEEP (*(.flashMailbox)) 74 | } > REGION_INFO 75 | 76 | /* TLV table for device identification and characterization */ 77 | PROVIDE (_tlv_base_address = 0x00201000); 78 | 79 | .tlvTable (_tlv_base_address) (NOLOAD) : AT (_tlv_base_address) { 80 | KEEP (*(.tlvTable)) 81 | } > REGION_INFO 82 | 83 | /* BSL area for device bootstrap loader */ 84 | PROVIDE (_bsl_base_address = 0x00202000); 85 | 86 | .bslArea (_bsl_base_address) : AT (_bsl_base_address) { 87 | KEEP (*(.bslArea)) 88 | } > REGION_INFO 89 | 90 | PROVIDE (_vtable_base_address = 91 | DEFINED(_vtable_base_address) ? _vtable_base_address : 0x20000000); 92 | 93 | .vtable (_vtable_base_address) : AT (_vtable_base_address) { 94 | KEEP (*(.vtable)) 95 | } > REGION_DATA 96 | 97 | .text : { 98 | CREATE_OBJECT_SYMBOLS 99 | KEEP (*(.text)) 100 | *(.text.*) 101 | . = ALIGN(0x4); 102 | KEEP (*(.ctors)) 103 | . = ALIGN(0x4); 104 | KEEP (*(.dtors)) 105 | . = ALIGN(0x4); 106 | __init_array_start = .; 107 | KEEP (*(.init_array*)) 108 | __init_array_end = .; 109 | *(.init) 110 | *(.fini*) 111 | } > REGION_TEXT AT> REGION_TEXT 112 | 113 | .rodata : { 114 | *(.rodata) 115 | *(.rodata.*) 116 | } > REGION_TEXT AT> REGION_TEXT 117 | 118 | .ARM.exidx : { 119 | __exidx_start = .; 120 | *(.ARM.exidx* .gnu.linkonce.armexidx.*) 121 | __exidx_end = .; 122 | } > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX 123 | 124 | .ARM.extab : { 125 | *(.ARM.extab* .gnu.linkonce.armextab.*) 126 | } > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB 127 | 128 | __etext = .; 129 | 130 | .data : { 131 | __data_load__ = LOADADDR (.data); 132 | __data_start__ = .; 133 | KEEP (*(.data)) 134 | KEEP (*(.data*)) 135 | . = ALIGN (4); 136 | __data_end__ = .; 137 | } > REGION_DATA AT> REGION_TEXT 138 | 139 | .bss : { 140 | __bss_start__ = .; 141 | *(.shbss) 142 | KEEP (*(.bss)) 143 | *(.bss.*) 144 | *(COMMON) 145 | . = ALIGN (4); 146 | __bss_end__ = .; 147 | } > REGION_BSS AT> REGION_BSS 148 | 149 | .heap : { 150 | __heap_start__ = .; 151 | end = __heap_start__; 152 | _end = end; 153 | __end = end; 154 | KEEP (*(.heap)) 155 | __heap_end__ = .; 156 | __HeapLimit = __heap_end__; 157 | } > REGION_HEAP AT> REGION_HEAP 158 | 159 | .stack (NOLOAD) : ALIGN(0x8) { 160 | _stack = .; 161 | __stack = .; 162 | KEEP(*(.stack)) 163 | } > REGION_STACK AT> REGION_STACK 164 | } 165 | 166 | -------------------------------------------------------------------------------- /Assignments/Ass.2/src/Makefile: -------------------------------------------------------------------------------- 1 | #****************************************************************************** 2 | # Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | # 4 | # Redistribution, modification or use of this software in source or binary 5 | # forms is permitted as long as the files maintain this copyright. Users are 6 | # permitted to modify this and use it to learn about the field of embedded 7 | # software. Alex Fosdick and the University of Colorado are not liable for any 8 | # misuse of this material. 9 | # 10 | #***************************************************************************** 11 | 12 | #------------------------------------------------------------------------------ 13 | # This is the second assessment in the course, it's a makefile to automate the build process 14 | # 15 | # Use: make [TARGET] [PLATFORM-OVERRIDES] 16 | # 17 | # Build Targets: 18 | # .i --> this rule generates the intermediate file outputted from preprocessor from the corresponding C file, it also generates the dependecy .d file 19 | # .asm --> generates the assembly file from the corresponding C file 20 | # .o --> compiles all the source files and generates the corresponding object file 21 | # compile-all --> compiles all the src files without linking and generates the corresponding object files 22 | # build --> links the object files into one executable file named c1m2.out and generates the memory map of the executable, it also shows a brief information about the output code size on the CLI 23 | # clean --> removes all the generated files whether .i, .o, .d, .map, .s, .out 24 | # 25 | # Platform Overrides: 26 | # This makefile supports 2 platforms: the host linux machine, and the MSP432 microcontroller. 27 | # For the MSP432 we define its specific linker file (msp432p401r.lds), the CPU, architecture which are different from the case of "host" platform 28 | # 29 | #------------------------------------------------------------------------------ 30 | include sources.mk 31 | 32 | # Platform Overrides 33 | #PLATFORM = 34 | BASENAME = c1m2 35 | 36 | # Architectures Specific Flags 37 | ifeq ($(PLATFORM), MSP432) 38 | LINKER_FILE = -T ../msp432p401r.lds 39 | CPU = cortex-m4 40 | ARCH = armv7e-m 41 | SPECS = nosys.specs 42 | else 43 | CPU = x86_64 44 | ARCH:=$(shell arch) 45 | endif 46 | 47 | # Compiler Flags and Defines 48 | ifeq ($(PLATFORM), MSP432) 49 | CC = arm-none-eabi-gcc 50 | LD = arm-none-eabi-ld 51 | LDFLAGS = -Wl,-Map=$(BASENAME).map $(LINKER_FILE) 52 | ### -Wl,option: Pass option as an option to the linker. If option contains commas, it is split into multiple options at the commas. You can use this syntax to pass an argument to the option. For example, -Wl,-Map,output.map passes -Map output.map to the linker. When using the GNU linker, you can also get the same effect with -Wl,-Map=output.map. 53 | CFLAGS = -mcpu=$(CPU) -march=$(ARCH) --specs=$(SPECS) -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -Wall -Werror -O0 -g -std=c99 54 | ### Some flags as described from GCC documentation: 55 | ### -Wall: This enables all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. 56 | ### -Werror: Make all warnings into errors. 57 | ### -O0: Reduce compilation time and make debugging produce the expected results. This is the default. 58 | CPPFLAGs = -M -MF test.d 59 | DEFINEFLAG = -DMSP432 60 | else 61 | CC = gcc 62 | #LD = 63 | LDFLAGS = -Wl,-Map=$(BASENAME).map 64 | CFLAGS = -Wall -Werror -O0 -g -std=c99 65 | CPPFLAGs = -M -MF test2.d 66 | DEFINEFLAG = -DHOST 67 | endif 68 | 69 | # More Declared Variables 70 | OBJS:= $(SOURCES:.c=.o) 71 | ASMS:= $(SOURCES:.c=.s) 72 | PPS:= $(SOURCES:.c=.i) 73 | MAPS:= $(SOURCES:.c=.map) 74 | OUTS:= $(SOURCES:.c=.out) 75 | 76 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 77 | # Target: .i 78 | # Prerequisites: the .c file 79 | # Output: the .d as well as .i files 80 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 81 | %.i : %.c 82 | $(CC) $(CPPFLAGs) $(DEFINEFLAG) $< 83 | $(CC) $(DEFINEFLAG) -E -o $@ $< 84 | #$(CC) $(CPPFLAGs) -E -o $@ $< 85 | ### -E: Stop after the preprocessing stage; do not run the compiler proper. The output is in the form of preprocessed source code, which is sent to the standard output. 86 | 87 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 88 | # Target: .asm 89 | # Prerequisites: the .c file 90 | # Output: the .asm file whether from the .c file or the object file 91 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 92 | %.asm : %.c 93 | $(CC) $(DEFINEFLAG) $(CFLAGS) -S $< 94 | objdump $(OBJS) -D 95 | ### -S: Stop after the stage of compilation proper; do not assemble. The output is in the form of an assembler code file for each non-assembler input file specified. 96 | 97 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 98 | # Target: .o 99 | # Prerequisites: the .c file 100 | # Output: the .o file corresponding to the provided .c file 101 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 102 | %.o : %.c 103 | $(CC) $(DEFINEFLAG) $(CFLAGS) -c $< 104 | 105 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 106 | # Target: compile-all 107 | # Prerequisites: the source files 108 | # Output: all source files are compiled but without linking and their corresponding .o files are generated 109 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 110 | .PHONY: compile-all 111 | compile-all: $(SOURCES) 112 | #$(OBJS): $(SOURCES) 113 | $(CC) $(DEFINEFLAG) $(CFLAGS) -c $(SOURCES) 114 | 115 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 116 | # Target: build 117 | # Prerequisites: the main.out file 118 | # Output: the final executable file after linking and a brief report regarding the application size 119 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 120 | .PHONY: build 121 | build: $(OUTS) 122 | #main.out 123 | # I've a question here, if I set the prerequisites to main.o instead of main.out, the process doesn't get finished ... also how can make compiles the files and generate the object files when they are not provided by user as prerequesites. How can make understand that it should generate the .o files from the .c files before proceeding? 124 | $(OUTS): $(SOURCES) 125 | $(CC) $(DEFINEFLAG) $(CFLAGS) $(LDFLAGS) -o c1m2.out $^ 126 | size c1m2.out 127 | 128 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 129 | # Target: clean 130 | # Prerequisites: None 131 | # Output: all generated file are removed and the directory is cleaned for a new build 132 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 133 | .PHONY: clean 134 | clean: 135 | #rm -f $(OBJS) main.out $(ASMS) $(PPS) $(MAPS) 136 | rm -f *.i *.d *.map *.s *.out *.o 137 | 138 | -------------------------------------------------------------------------------- /Assignments/Ass.2/src/main.c: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | /** 12 | * @file main.c 13 | * @brief Main entry point to the C1M2 Assessment 14 | * 15 | * This file contains the main code for the C1M2 assesment. Students 16 | * are not to change any of the code, they are instead supposed to compile 17 | * these files with their makefile. 18 | * 19 | * @author Alex Fosdick 20 | * @date April 1 2017 21 | * 22 | */ 23 | #include "../include/common/platform.h" 24 | #include "../include/common/memory.h" 25 | 26 | #define MAX_LENGTH (10) 27 | char buffer[MAX_LENGTH]; 28 | 29 | /* A pretty boring main file */ 30 | int main(void) { 31 | unsigned int i; 32 | char value; 33 | 34 | /* Code below does some arbitrary memory Reads & writes */ 35 | clear_all(buffer, MAX_LENGTH); 36 | set_all( ( buffer + 8 ), 43, 2); 37 | set_value(buffer, 0, 0x61); 38 | value = get_value(buffer, 9); 39 | set_value(buffer, 9, (value + 0x27)); 40 | set_value(buffer, 3, 0x37); 41 | set_value(buffer, 1, 88); 42 | set_value(buffer, 4, '2'); 43 | value = get_value(buffer, 1); 44 | set_value(buffer, 2, 121); 45 | set_value(buffer, 7, (value - 12)); 46 | set_value(buffer, 5, 0x5F); 47 | 48 | for ( i = 0; i < MAX_LENGTH; i++ ){ 49 | PRINTF("%c", buffer[i]); 50 | } 51 | PRINTF("\n"); 52 | return 0; 53 | } 54 | 55 | -------------------------------------------------------------------------------- /Assignments/Ass.2/src/memory.c: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | /** 12 | * @file memory.c 13 | * @brief Abstraction of memory read and write operations 14 | * 15 | * This implementation file provides an abstraction of reading and 16 | * writing to memory via function calls. There is also a globally 17 | * allocated buffer array used for manipulation. 18 | * 19 | * @author Alex Fosdick 20 | * @date April 1 2017 21 | * 22 | */ 23 | #include "../include/common/memory.h" 24 | 25 | /*********************************************************** 26 | Function Definitions 27 | ***********************************************************/ 28 | void set_value(char * ptr, unsigned int index, char value){ 29 | ptr[index] = value; 30 | } 31 | 32 | void clear_value(char * ptr, unsigned int index){ 33 | set_value(ptr, index, 0); 34 | } 35 | 36 | char get_value(char * ptr, unsigned int index){ 37 | return ptr[index]; 38 | } 39 | 40 | void set_all(char * ptr, char value, unsigned int size){ 41 | unsigned int i; 42 | for(i = 0; i < size; i++) { 43 | set_value(ptr, i, value); 44 | } 45 | } 46 | 47 | void clear_all(char * ptr, unsigned int size){ 48 | set_all(ptr, 0, size); 49 | } 50 | 51 | -------------------------------------------------------------------------------- /Assignments/Ass.2/src/sources.mk: -------------------------------------------------------------------------------- 1 | #****************************************************************************** 2 | # Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | # 4 | # Redistribution, modification or use of this software in source or binary 5 | # forms is permitted as long as the files maintain this copyright. Users are 6 | # permitted to modify this and use it to learn about the field of embedded 7 | # software. Alex Fosdick and the University of Colorado are not liable for any 8 | # misuse of this material. 9 | # 10 | #***************************************************************************** 11 | 12 | ifeq ($(PLATFORM),MSP432) 13 | SOURCES = *.c 14 | 15 | INCLUDES = ../include/CMSIS/cmsis_gcc.h \ 16 | ../include/CMSIS/core_cm4.h \ 17 | ../include/CMSIS/core_cmFunc.h \ 18 | ../include/CMSIS/core_cmInstr.h \ 19 | ../include/CMSIS/core_cmSimd.h \ 20 | ../include/common/memory.h \ 21 | ../include/common/platform.h \ 22 | ../include/msp432/msp432p401r.h \ 23 | ../include/msp432/msp_compatibility.h \ 24 | ../include/msp432/system_msp432p401r.h 25 | 26 | else 27 | SOURCES = main.c \ 28 | memory.c 29 | 30 | INCLUDES = ../include/common/memory.h \ 31 | ../include/common/platform.h 32 | endif 33 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/Makefile: -------------------------------------------------------------------------------- 1 | #****************************************************************************** 2 | # Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | # 4 | # Redistribution, modification or use of this software in source or binary 5 | # forms is permitted as long as the files maintain this copyright. Users are 6 | # permitted to modify this and use it to learn about the field of embedded 7 | # software. Alex Fosdick and the University of Colorado are not liable for any 8 | # misuse of this material. 9 | # 10 | #***************************************************************************** 11 | 12 | #------------------------------------------------------------------------------ 13 | # This is the second assessment in the course, it's a makefile to automate the build process 14 | # 15 | # Use: make [TARGET] [PLATFORM-OVERRIDES] 16 | # 17 | # Build Targets: 18 | # .i --> this rule generates the intermediate file outputted from preprocessor from the corresponding C file, it also generates the dependecy .d file 19 | # .asm --> generates the assembly file from the corresponding C file 20 | # .o --> compiles all the source files and generates the corresponding object file 21 | # compile-all --> compiles all the src files without linking and generates the corresponding object files 22 | # build --> links the object files into one executable file named c1m2.out and generates the memory map of the executable, it also shows a brief information about the output code size on the CLI 23 | # clean --> removes all the generated files whether .i, .o, .d, .map, .s, .out 24 | # 25 | # Platform Overrides: 26 | # This makefile supports 2 platforms: the host linux machine, and the MSP432 microcontroller. 27 | # For the MSP432 we define its specific linker file (msp432p401r.lds), the CPU, architecture which are different from the case of "host" platform 28 | # 29 | #------------------------------------------------------------------------------ 30 | include sources.mk 31 | 32 | # Platform Overrides 33 | BASENAME = course1 34 | 35 | # Architectures Specific Flags 36 | ifeq ($(PLATFORM), MSP432) 37 | LINKER_FILE = -T msp432p401r.lds 38 | CPU = cortex-m4 39 | ARCH = armv7e-m 40 | SPECS = nosys.specs 41 | else 42 | CPU = x86_64 43 | ARCH:=$(shell arch) 44 | endif 45 | 46 | # Compiler Flags and Defines 47 | ifeq ($(PLATFORM), MSP432) 48 | CC = arm-none-eabi-gcc 49 | LD = arm-none-eabi-ld 50 | LDFLAGS = -Wl,-Map=$(BASENAME).map $(LINKER_FILE) 51 | ### -Wl,option: Pass option as an option to the linker. If option contains commas, it is split into multiple options at the commas. You can use this syntax to pass an argument to the option. For example, -Wl,-Map,output.map passes -Map output.map to the linker. When using the GNU linker, you can also get the same effect with -Wl,-Map=output.map. 52 | CFLAGS = -mcpu=$(CPU) -march=$(ARCH) --specs=$(SPECS) -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -Wall -O0 -g -std=c99 53 | ### Some flags as described from GCC documentation: 54 | ### -Wall: This enables all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. 55 | ### -Werror: Make all warnings into errors. 56 | ### -O0: Reduce compilation time and make debugging produce the expected results. This is the default. 57 | CPPFLAGs = -M -MF test.d 58 | DEFINEFLAG = -DMSP432 59 | else 60 | CC = gcc 61 | LDFLAGS = -Wl,-Map=$(BASENAME).map 62 | CFLAGS = -Wall -O0 -g -std=c99 63 | CPPFLAGs = -M -MF test2.d 64 | DEFINEFLAG = -DHOST 65 | endif 66 | 67 | ifeq ($(VERBOSE), TRUE) 68 | CFLAGS += -DVERBOSE 69 | endif 70 | 71 | ifeq ($(COURSE1), TRUE) 72 | CFLAGS += -DCOURSE1 73 | endif 74 | 75 | # More Declared Variables 76 | OBJS:= $(SOURCES:.c=.o) 77 | ASMS:= $(SOURCES:.c=.s) 78 | PPS:= $(SOURCES:.c=.i) 79 | MAPS:= $(SOURCES:.c=.map) 80 | OUTS:= $(SOURCES:.c=.out) 81 | 82 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 83 | # Target: .i 84 | # Prerequisites: the .c file 85 | # Output: the .d as well as .i files 86 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 87 | %.i : %.c 88 | $(CC) $(CPPFLAGs) $(DEFINEFLAG) $< 89 | $(CC) $(DEFINEFLAG) -E -o $@ $< 90 | #$(CC) $(CPPFLAGs) -E -o $@ $< 91 | ### -E: Stop after the preprocessing stage; do not run the compiler proper. The output is in the form of preprocessed source code, which is sent to the standard output. 92 | 93 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 94 | # Target: .asm 95 | # Prerequisites: the .c file 96 | # Output: the .asm file whether from the .c file or the object file 97 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 98 | %.asm : %.c 99 | $(CC) $(DEFINEFLAG) $(CFLAGS) -S $< 100 | objdump $(OBJS) -D 101 | ### -S: Stop after the stage of compilation proper; do not assemble. The output is in the form of an assembler code file for each non-assembler input file specified. 102 | 103 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 104 | # Target: .o 105 | # Prerequisites: the .c file 106 | # Output: the .o file corresponding to the provided .c file 107 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 108 | %.o : %.c 109 | $(CC) $(DEFINEFLAG) $(CFLAGS) -c $< 110 | 111 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 112 | # Target: compile-all 113 | # Prerequisites: the source files 114 | # Output: all source files are compiled but without linking and their corresponding .o files are generated 115 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 116 | .PHONY: compile-all 117 | compile-all: $(SOURCES) 118 | #$(OBJS): $(SOURCES) 119 | $(CC) $(DEFINEFLAG) $(CFLAGS) -c $(SOURCES) -lm 120 | 121 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 122 | # Target: build 123 | # Prerequisites: the main.out file 124 | # Output: the final executable file after linking and a brief report regarding the application size 125 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 126 | .PHONY: build 127 | build: $(OUTS) 128 | #main.out 129 | # I've a question here, if I set the prerequisites to main.o instead of main.out, the process doesn't get finished ... also how can make compiles the files and generate the object files when they are not provided by user as prerequesites. How can make understand that it should generate the .o files from the .c files before proceeding? 130 | $(OUTS): $(SOURCES) 131 | $(CC) $(DEFINEFLAG) $(CFLAGS) $(LDFLAGS) -o course1.out $^ -lm 132 | size -Atd course1.out 133 | 134 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 135 | # Target: clean 136 | # Prerequisites: None 137 | # Output: all generated file are removed and the directory is cleaned for a new build 138 | #---------------------------------------------------------------------------------------------------------------------------------------------------------------------- # 139 | .PHONY: clean 140 | clean: 141 | #rm -f $(OBJS) main.out $(ASMS) $(PPS) $(MAPS) 142 | rm -f *.i *.d *.map *.s *.out *.o 143 | 144 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/CMSIS/core_cmFunc.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file core_cmFunc.h 3 | * @brief CMSIS Cortex-M Core Function Access Header File 4 | * @version V4.30 5 | * @date 20. October 2015 6 | ******************************************************************************/ 7 | /* Copyright (c) 2009 - 2015 ARM LIMITED 8 | 9 | All rights reserved. 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | - Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | - Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in the 16 | documentation and/or other materials provided with the distribution. 17 | - Neither the name of ARM nor the names of its contributors may be used 18 | to endorse or promote products derived from this software without 19 | specific prior written permission. 20 | * 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | ---------------------------------------------------------------------------*/ 33 | 34 | 35 | #if defined ( __ICCARM__ ) 36 | #pragma system_include /* treat file as system include file for MISRA check */ 37 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 38 | #pragma clang system_header /* treat file as system include file */ 39 | #endif 40 | 41 | #ifndef __CORE_CMFUNC_H 42 | #define __CORE_CMFUNC_H 43 | 44 | 45 | /* ########################### Core Function Access ########################### */ 46 | /** \ingroup CMSIS_Core_FunctionInterface 47 | \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions 48 | @{ 49 | */ 50 | 51 | /*------------------ RealView Compiler -----------------*/ 52 | #if defined ( __CC_ARM ) 53 | #include "cmsis_armcc.h" 54 | 55 | /*------------------ ARM Compiler V6 -------------------*/ 56 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 57 | #include "cmsis_armcc_V6.h" 58 | 59 | /*------------------ GNU Compiler ----------------------*/ 60 | #elif defined ( __GNUC__ ) 61 | #include "cmsis_gcc.h" 62 | 63 | /*------------------ ICC Compiler ----------------------*/ 64 | #elif defined ( __ICCARM__ ) 65 | #include 66 | 67 | /*------------------ TI CCS Compiler -------------------*/ 68 | #elif defined ( __TMS470__ ) 69 | #include 70 | 71 | /*------------------ TASKING Compiler ------------------*/ 72 | #elif defined ( __TASKING__ ) 73 | /* 74 | * The CMSIS functions have been implemented as intrinsics in the compiler. 75 | * Please use "carm -?i" to get an up to date list of all intrinsics, 76 | * Including the CMSIS ones. 77 | */ 78 | 79 | /*------------------ COSMIC Compiler -------------------*/ 80 | #elif defined ( __CSMC__ ) 81 | #include 82 | 83 | #endif 84 | 85 | /*@} end of CMSIS_Core_RegAccFunctions */ 86 | 87 | #endif /* __CORE_CMFUNC_H */ 88 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/CMSIS/core_cmInstr.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file core_cmInstr.h 3 | * @brief CMSIS Cortex-M Core Instruction Access Header File 4 | * @version V4.30 5 | * @date 20. October 2015 6 | ******************************************************************************/ 7 | /* Copyright (c) 2009 - 2015 ARM LIMITED 8 | 9 | All rights reserved. 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | - Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | - Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in the 16 | documentation and/or other materials provided with the distribution. 17 | - Neither the name of ARM nor the names of its contributors may be used 18 | to endorse or promote products derived from this software without 19 | specific prior written permission. 20 | * 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | ---------------------------------------------------------------------------*/ 33 | 34 | 35 | #if defined ( __ICCARM__ ) 36 | #pragma system_include /* treat file as system include file for MISRA check */ 37 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 38 | #pragma clang system_header /* treat file as system include file */ 39 | #endif 40 | 41 | #ifndef __CORE_CMINSTR_H 42 | #define __CORE_CMINSTR_H 43 | 44 | 45 | /* ########################## Core Instruction Access ######################### */ 46 | /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface 47 | Access to dedicated instructions 48 | @{ 49 | */ 50 | 51 | /*------------------ RealView Compiler -----------------*/ 52 | #if defined ( __CC_ARM ) 53 | #include "cmsis_armcc.h" 54 | 55 | /*------------------ ARM Compiler V6 -------------------*/ 56 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 57 | #include "cmsis_armcc_V6.h" 58 | 59 | /*------------------ GNU Compiler ----------------------*/ 60 | #elif defined ( __GNUC__ ) 61 | #include "cmsis_gcc.h" 62 | 63 | /*------------------ ICC Compiler ----------------------*/ 64 | #elif defined ( __ICCARM__ ) 65 | #include 66 | 67 | /*------------------ TI CCS Compiler -------------------*/ 68 | #elif defined ( __TMS470__ ) 69 | #include 70 | 71 | /*------------------ TASKING Compiler ------------------*/ 72 | #elif defined ( __TASKING__ ) 73 | /* 74 | * The CMSIS functions have been implemented as intrinsics in the compiler. 75 | * Please use "carm -?i" to get an up to date list of all intrinsics, 76 | * Including the CMSIS ones. 77 | */ 78 | 79 | /*------------------ COSMIC Compiler -------------------*/ 80 | #elif defined ( __CSMC__ ) 81 | #include 82 | 83 | #endif 84 | 85 | /*@}*/ /* end of group CMSIS_Core_InstructionInterface */ 86 | 87 | #endif /* __CORE_CMINSTR_H */ 88 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/CMSIS/core_cmSimd.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file core_cmSimd.h 3 | * @brief CMSIS Cortex-M SIMD Header File 4 | * @version V4.30 5 | * @date 20. October 2015 6 | ******************************************************************************/ 7 | /* Copyright (c) 2009 - 2015 ARM LIMITED 8 | 9 | All rights reserved. 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | - Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | - Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in the 16 | documentation and/or other materials provided with the distribution. 17 | - Neither the name of ARM nor the names of its contributors may be used 18 | to endorse or promote products derived from this software without 19 | specific prior written permission. 20 | * 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 | ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 25 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 | POSSIBILITY OF SUCH DAMAGE. 32 | ---------------------------------------------------------------------------*/ 33 | 34 | 35 | #if defined ( __ICCARM__ ) 36 | #pragma system_include /* treat file as system include file for MISRA check */ 37 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 38 | #pragma clang system_header /* treat file as system include file */ 39 | #endif 40 | 41 | #ifndef __CORE_CMSIMD_H 42 | #define __CORE_CMSIMD_H 43 | 44 | #ifdef __cplusplus 45 | extern "C" { 46 | #endif 47 | 48 | 49 | /* ################### Compiler specific Intrinsics ########################### */ 50 | /** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics 51 | Access to dedicated SIMD instructions 52 | @{ 53 | */ 54 | 55 | /*------------------ RealView Compiler -----------------*/ 56 | #if defined ( __CC_ARM ) 57 | #include "cmsis_armcc.h" 58 | 59 | /*------------------ ARM Compiler V6 -------------------*/ 60 | #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 61 | #include "cmsis_armcc_V6.h" 62 | 63 | /*------------------ GNU Compiler ----------------------*/ 64 | #elif defined ( __GNUC__ ) 65 | #include "cmsis_gcc.h" 66 | 67 | /*------------------ ICC Compiler ----------------------*/ 68 | #elif defined ( __ICCARM__ ) 69 | #include 70 | 71 | /*------------------ TI CCS Compiler -------------------*/ 72 | #elif defined ( __TMS470__ ) 73 | #include 74 | 75 | /*------------------ TASKING Compiler ------------------*/ 76 | #elif defined ( __TASKING__ ) 77 | /* 78 | * The CMSIS functions have been implemented as intrinsics in the compiler. 79 | * Please use "carm -?i" to get an up to date list of all intrinsics, 80 | * Including the CMSIS ones. 81 | */ 82 | 83 | /*------------------ COSMIC Compiler -------------------*/ 84 | #elif defined ( __CSMC__ ) 85 | #include 86 | 87 | #endif 88 | 89 | /*@} end of group CMSIS_SIMD_intrinsics */ 90 | 91 | 92 | #ifdef __cplusplus 93 | } 94 | #endif 95 | 96 | #endif /* __CORE_CMSIMD_H */ 97 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/common/course1.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | /** 12 | * @file course1.h 13 | * @brief This file is to be used to course 1 final assessment. 14 | * 15 | * @author Alex Fosdick 16 | * @date April 2, 2017 17 | * 18 | */ 19 | #ifndef __COURSE1_H__ 20 | #define __COURSE1_H__ 21 | 22 | #include 23 | 24 | #define DATA_SET_SIZE_W (10) 25 | #define MEM_SET_SIZE_B (32) 26 | #define MEM_SET_SIZE_W (8) 27 | #define MEM_ZERO_LENGTH (16) 28 | 29 | #define TEST_MEMMOVE_LENGTH (16) 30 | #define TEST_ERROR (1) 31 | #define TEST_NO_ERROR (0) 32 | #define TESTCOUNT (8) 33 | 34 | /** 35 | * @brief function to run course1 materials 36 | * 37 | * This function calls some various simple tests that you can run to test 38 | * your code for the course 1 final assesment. The contents of these functions 39 | * have been provided. 40 | * 41 | * @return void 42 | */ 43 | void course1(void); 44 | 45 | /** 46 | * @brief function to run course1 data operations 47 | * 48 | * This function calls the my_itoa and my_atoi functions to validate they 49 | * work as expected for hexadecimal numbers. 50 | * 51 | * @return void 52 | */ 53 | int8_t test_data1(); 54 | 55 | /** 56 | * @brief function to run course1 data operations 57 | * 58 | * This function calls the my_itoa and my_atoi functions to validate they 59 | * work as expected for decimal numbers. 60 | * 61 | * @return void 62 | */ 63 | int8_t test_data2(); 64 | 65 | /** 66 | * @brief function to test the non-overlapped memmove operation 67 | * 68 | * This function calls the memmove routine with two sets of data that do not 69 | * over lap in anyway. This function should print that a move worked correctly 70 | * for a move from source to destination. 71 | * 72 | * @return void 73 | */ 74 | int8_t test_memmove1(); 75 | 76 | /** 77 | * @brief function to test an overlapped Memmove operation Part 1 78 | * 79 | * This function calls the memmove routine with two sets of data that not 80 | * over lap. Overlap exists at the start of the destination and the end of the 81 | * source pointers. This function should print that a move worked correctly 82 | * for a move from source to destination regardless of overlap. 83 | * 84 | * @return void 85 | */ 86 | int8_t test_memmove2(); 87 | 88 | /** 89 | * @brief function to run course1 memmove overlapped test 90 | * 91 | * This function calls the memmove routine with two sets of data that not 92 | * over lap. Overlap exists at the start of the source and the end of the 93 | * destination pointers. This function should print that a move worked correctly 94 | * for a move from source to destination regardless of overlap. 95 | * 96 | * @return void 97 | */ 98 | int8_t test_memmove3(); 99 | 100 | /** 101 | * @brief function to test the memcopy functionality 102 | * 103 | * This function calls the my_memcopy functions to validate a copy works 104 | * correctly. 105 | * 106 | * @return void 107 | */ 108 | int8_t test_memcopy(); 109 | 110 | /** 111 | * @brief function to test the memset and memzero functionality 112 | * 113 | * This function calls the memset and memzero functions. This shoudl zero out 114 | * the bytes from [] to []. This should set the bytes [] to [] with 0xFF. 115 | * 116 | * @return void 117 | */ 118 | int8_t test_memset(); 119 | 120 | /** 121 | * @brief function to test the reverse functionality 122 | * 123 | * This function calls the my_reverse function to see if a give set of ASCII 124 | * characters will properly reverse. 125 | * 126 | * @return void 127 | */ 128 | int8_t test_reverse(); 129 | 130 | #endif /* __COURSE1_H__ */ 131 | 132 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/common/data.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file data.h 3 | * @brief Abstraction of some basic data manipulation 4 | * 5 | * This header file provides an abstraction of the basic data manipulation, 6 | * converting data from int to ASCII, and vice-versa 7 | * 8 | * @author Mohammed Abdelalim 9 | * @date 24/10/2020 10 | * 11 | */ 12 | 13 | #ifndef __data_H__ 14 | #define __data_H__ 15 | 16 | #include 17 | 18 | /** 19 | * @brief Converts given data from integer to ASCII string 20 | * 21 | * Given a pointer to a char dataset, this will set a provided 22 | * index into that dataset to the value provided. 23 | * Regarding the signed numbers, the function handles the base 10 signed numbers only. 24 | * 25 | * @param data The int number to be converted 26 | * @param ptr Pointer to data array 27 | * @param base Base to convert to 28 | * 29 | * @return length of the converted data. 30 | */ 31 | uint8 my_itoa(int32 data, uint8 * ptr, uint32 base); 32 | 33 | /** 34 | * @brief Converts given data from ASCII string to integer 35 | * 36 | * Given a pointer to a char dataset, this will set a provided 37 | * index into that dataset to the value provided. 38 | * The function handles the base 10 signed numbers. 39 | * 40 | * @param ptr Pointer to the string to be converted 41 | * @param digits Number of digits in the character set 42 | * @param value Base to convert to 43 | * 44 | * @return the converted integer. 45 | */ 46 | int32 my_atoi(uint8 * ptr, uint8 digits, uint32 base); 47 | 48 | /** 49 | * @brief Calculates the power of a nymber 50 | * 51 | * @param number The base number 52 | * @param power The power factor 53 | * 54 | * @return the result. 55 | */ 56 | int32 powerFunction(int32 number, uint8 power); 57 | #endif 58 | 59 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/common/memory.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | /** 12 | * @file memory.h 13 | * @brief Abstraction of memory read, write, and manipulation operations 14 | * 15 | * This header file provides an abstraction of reading, 16 | * writing, and memory manipulation via function calls. 17 | * 18 | * @author Alex Fosdick 19 | * @date 1/4/2017 20 | * @edited 24/10/2020 by Mohammed Abdelalim 21 | * 22 | */ 23 | #ifndef __MEMORY_H__ 24 | #define __MEMORY_H__ 25 | 26 | #include 27 | #include 28 | 29 | typedef unsigned char uint8; 30 | typedef char int8; 31 | typedef long int int32; 32 | typedef int int16; 33 | typedef unsigned int uint32; 34 | 35 | /** 36 | * @brief Sets a value of a data array 37 | * 38 | * Given a pointer to a char dataset, this will set a provided 39 | * index into that dataset to the value provided. 40 | * 41 | * @param ptr Pointer to data array 42 | * @param index Index into pointer array to set value 43 | * @param value Value to write the location 44 | * 45 | * @return void. 46 | */ 47 | void set_value(char * ptr, unsigned int index, char value); 48 | 49 | /** 50 | * @brief Clear a value of a data array 51 | * 52 | * Given a pointer to a char dataset, this will clear a provided 53 | * index into that dataset to the value zero. 54 | * 55 | * @param ptr Pointer to data array 56 | * @param index Index into pointer array to set value 57 | * 58 | * @return void. 59 | */ 60 | void clear_value(char * ptr, unsigned int index); 61 | 62 | /** 63 | * @brief Returns a value of a data array 64 | * 65 | * Given a pointer to a char dataset, this will read the provided 66 | * index into that dataset and return the value. 67 | * 68 | * @param ptr Pointer to data array 69 | * @param index Index into pointer array to set value 70 | * 71 | * @return Value to be read. 72 | */ 73 | char get_value(char * ptr, unsigned int index); 74 | 75 | /** 76 | * @brief Sets data array elements to a value 77 | * 78 | * Given a pointer to a char dataset, this will set a number of elements 79 | * from a provided data array to the given value. The length is determined 80 | * by the provided size parameter. 81 | * 82 | * @param ptr Pointer to data array 83 | * @param value value to write in the locaiton 84 | * @param size Number of elements to set to value 85 | * 86 | * @return void. 87 | */ 88 | void set_all(char * ptr, char value, unsigned int size); 89 | 90 | /** 91 | * @brief Clears elements in a data array 92 | * 93 | * Given a pointer to a char dataset, this will set a clear a number 94 | * of elements given the size provided. Clear means to set to zero. 95 | * 96 | * @param ptr Pointer to data array 97 | * @param size Number of elements to set to zero 98 | * 99 | * @return void. 100 | */ 101 | void clear_all(char * ptr, unsigned int size); 102 | 103 | ///////////////////////////////// Added Code ////////////////////////////////// 104 | /** 105 | * @brief Moves data from source location with specific length to destination 106 | * 107 | * This function takes two byte pointers (one source and one destination) 108 | * and a length of bytes to move from the source location to the destination. 109 | * The behavior should handle overlap of source and destination. 110 | * Copy should occur with no data corruption 111 | * 112 | * @param src Pointer to the source location 113 | * @param dst Pointer to the destination 114 | * @param length The data length in bytes 115 | * 116 | * @return Pointer to the destination. 117 | */ 118 | uint8 * my_memmove(uint8 * src, uint8 * dst, uint8 length); 119 | 120 | /** 121 | * @brief Copies data from source location with specific length to destination 122 | * 123 | * This function takes two byte pointers (one source and one destination) 124 | * and a length of bytes to copy from the source location to the destination. 125 | * The behavior is undefined if there is overlap of source and destination, 126 | * copy should still occur, but will likely corrupt your data. 127 | * 128 | * @param src Pointer to the source location 129 | * @param dst Pointer to the destination 130 | * @param length The data length in bytes 131 | * 132 | * @return Pointer to the destination. 133 | */ 134 | uint8 * my_memcopy(uint8 * src, uint8 * dst, uint8 length); 135 | 136 | /** 137 | * @brief Sets a certain value to certain locations starting from a source address 138 | * 139 | * This function should take a pointer to a source memory location, a length in bytes 140 | * and set all locations of that memory to a given value. 141 | * 142 | * @param src Pointer to the source location 143 | * @param length The data length in bytes 144 | * @param value The value to be set 145 | * 146 | * @return Pointer to the source. 147 | */ 148 | uint8 * my_memset(uint8 * src, uint8 length, uint8 value); 149 | 150 | /** 151 | * @brief clears certain locations starting from a source address 152 | * 153 | * This function should take a pointer to a source memory location, a length in bytes 154 | * and zero out all of this memory 155 | * 156 | * @param src Pointer to the source location 157 | * @param length The data length in bytes 158 | * 159 | * @return Pointer to the source. 160 | */ 161 | uint8 * my_memzero(uint8 * src, uint8 length); 162 | 163 | /** 164 | * @brief reverses the order of data stored in specific memory locations 165 | * 166 | * This function should take a pointer to a source memory location, a length in bytes 167 | * and reverse the order of all of these bytes. 168 | * 169 | * @param src Pointer to the source location 170 | * @param length The data length in bytes 171 | * 172 | * @return Pointer to the source. 173 | */ 174 | uint8 * my_reverse(uint8 * src, uint8 length); 175 | 176 | /** 177 | * @brief allocates dynamic memory 178 | * 179 | * This function should take number of words to allocate in dynamic memory 180 | * 181 | * @param length Number of words (consider the word = 1 byte) 182 | * 183 | * @return Pointer to the source when successful allocation, or a Null pointer if not successful. 184 | */ 185 | int32 * reserve_words(uint8 length); 186 | 187 | /** 188 | * @brief frees dynamic memory 189 | * 190 | * This function should take pointer to the source memory and free this allocated memory 191 | * 192 | * @param src Pointer to the source location 193 | * 194 | * @return void 195 | */ 196 | void free_words(int32 * src); 197 | 198 | #endif /* __MEMORY_H__ */ 199 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/common/platform.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | #ifndef __PLATFORM_H__ 12 | #define __PLATFORM_H__ 13 | 14 | /****************************************************************************** 15 | Platform - MSP432 16 | ******************************************************************************/ 17 | #if defined (MSP432) 18 | #include "../msp432/msp432p401r.h" 19 | #define PRINTF(...) 20 | /****************************************************************************** 21 | Platform - HOST 22 | ******************************************************************************/ 23 | #elif defined (HOST) 24 | #include 25 | #define PRINTF(...) printf(__VA_ARGS__) 26 | /* The dots are called, together with the __VA_ARGS__, variadic macros 27 | * When the macro is invoked, all the tokens in its argument list [...], 28 | * including any commas, become the variable argument. 29 | * This sequence of tokens replaces the identifier VA_ARGS in the macro body wherever it appears. 30 | */ 31 | /****************************************************************************** 32 | Platform - Unsupported 33 | ******************************************************************************/ 34 | #else 35 | #error "Platform provided is not supported in this Build System" 36 | #endif 37 | 38 | #endif /* __PLATFORM_H__ */ 39 | 40 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/common/stats.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | /** 12 | * @file stats.h 13 | * @brief Definitions and macros required for the c1m1 assignment 14 | * 15 | * 16 | * @author Mohammed Abdelalim 17 | * @date 7/9/2020 18 | * 19 | */ 20 | #ifndef __STATS_H__ 21 | #define __STATS_H__ 22 | 23 | /** 24 | * @brief Prints the statistics of a given array 25 | * 26 | * This function takes the resulting statistics done on an array 27 | * which are: minimum, maximum, mean and median, and print those 28 | * values on the screen 29 | * 30 | * @param minimum The minimum number of the given array 31 | * @param maximum The maximum number of the given array 32 | * @param mean The mean of the given array 33 | * @param median The median of the given array 34 | * 35 | * @return void 36 | */ 37 | void print_statistics (unsigned char minimum, unsigned char maximum, float mean, unsigned char median); 38 | 39 | 40 | /** 41 | * @brief Prints the contents of a given array 42 | * 43 | * This function takes the given array and prints it to the 44 | * screen. 45 | * 46 | * @param array The first element of the array to be printed on the screen 47 | * @param counter The size of the array to be printed 48 | * 49 | * @return void 50 | */ 51 | void print_array (unsigned char *array, unsigned int counter); 52 | 53 | 54 | /** 55 | * @brief Finds the median of the given array 56 | * 57 | * This function takes the given array and finds 58 | * its median. 59 | * 60 | * @param array The first element of the array to be processed 61 | * @param counter The size of the array to be printed 62 | * 63 | * @return median The median value of the given array. 64 | */ 65 | unsigned char find_median (unsigned char *array, unsigned int counter); 66 | 67 | /** 68 | * @brief Finds the mean of the given array 69 | * 70 | * This function takes the given array and finds 71 | * its mean. 72 | * 73 | * @param array The first element of the array to be processed 74 | * @param counter The size of the array to be printed 75 | * 76 | * @return mean The mean value of the given array. 77 | */ 78 | float find_mean (unsigned char *array, unsigned int counter); 79 | 80 | /** 81 | * @brief Finds the maximum of the given array 82 | * 83 | * This function takes the given array and finds 84 | * its maximum. 85 | * 86 | * @param array The first element of the array to be processed 87 | * @param counter The size of the array to be printed 88 | * 89 | * @return maximum The maximum value of the given array. 90 | */ 91 | unsigned char find_maximum (unsigned char *array, unsigned int counter); 92 | 93 | /** 94 | * @brief Finds the minimum of the given array 95 | * 96 | * This function takes the given array and finds 97 | * its minimum. 98 | * 99 | * @param array The first element of the array to be processed 100 | * @param counter The size of the array to be printed 101 | * 102 | * @return minimum The minimum value of the given array. 103 | */ 104 | unsigned char find_minimum (unsigned char *array, unsigned int counter); 105 | 106 | /** 107 | * @brief Sorts the given array from the largest to smallest 108 | * 109 | * This function takes the given array and its length, sorts 110 | * the array from the largest to smallest using bubble sort and returns the 111 | * sorted array. 112 | * 113 | * @param array The first element of the array to be processed 114 | * @param counter The size of the array to be printed 115 | * 116 | * @return median The median value of the given array. 117 | */ 118 | void sort_array (unsigned char *array, unsigned int counter); 119 | 120 | #endif /* __STATS_H__ */ 121 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/msp432/msp.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Assignments/Final Assignment/include/msp432/msp.h -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/msp432/msp_compatibility.h: -------------------------------------------------------------------------------- 1 | //***************************************************************************** 2 | // 3 | // Copyright (C) 2013 - 2015 Texas Instruments Incorporated - http://www.ti.com/ 4 | // 5 | // Redistribution and use in source and binary forms, with or without 6 | // modification, are permitted provided that the following conditions 7 | // are met: 8 | // 9 | // Redistributions of source code must retain the above copyright 10 | // notice, this list of conditions and the following disclaimer. 11 | // 12 | // Redistributions in binary form must reproduce the above copyright 13 | // notice, this list of conditions and the following disclaimer in the 14 | // documentation and/or other materials provided with the 15 | // distribution. 16 | // 17 | // Neither the name of Texas Instruments Incorporated nor the names of 18 | // its contributors may be used to endorse or promote products derived 19 | // from this software without specific prior written permission. 20 | // 21 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | // 33 | // MSP430 intrinsic redefinitions for use with MSP432 Family Devices 34 | // 35 | //**************************************************************************** 36 | 37 | /****************************************************************************** 38 | * Definitions for 8/16/32-bit wide memory access * 39 | ******************************************************************************/ 40 | #define HWREG8(x) (*((volatile uint8_t *)(x))) 41 | #define HWREG16(x) (*((volatile uint16_t *)(x))) 42 | #define HWREG32(x) (*((volatile uint32_t *)(x))) 43 | #define HWREG(x) (HWREG16(x)) 44 | #define HWREG8_L(x) (*((volatile uint8_t *)((uint8_t *)&x))) 45 | #define HWREG8_H(x) (*((volatile uint8_t *)(((uint8_t *)&x)+1))) 46 | #define HWREG16_L(x) (*((volatile uint16_t *)((uint16_t *)&x))) 47 | #define HWREG16_H(x) (*((volatile uint16_t *)(((uint16_t *)&x)+1))) 48 | 49 | /****************************************************************************** 50 | * Definitions for 8/16/32-bit wide bit band access * 51 | ******************************************************************************/ 52 | #define HWREGBIT8(x, b) (HWREG8(((uint32_t)(x) & 0xF0000000) | 0x02000000 | (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))) 53 | #define HWREGBIT16(x, b) (HWREG16(((uint32_t)(x) & 0xF0000000) | 0x02000000 | (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))) 54 | #define HWREGBIT32(x, b) (HWREG32(((uint32_t)(x) & 0xF0000000) | 0x02000000 | (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))) 55 | 56 | #undef __wfi 57 | #define __wfi() __asm(" wfi") 58 | #define __sleep() __wfi() 59 | #define __deep_sleep() { (*((volatile uint32_t *)(0xE000ED10))) |= 0x00000004; __wfi(); (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000004; } 60 | #define __low_power_mode_off_on_exit() { (*((volatile uint32_t *)(0xE000ED10))) &= ~0x00000002; } 61 | #define __get_SP_register() __get_MSP() 62 | #define __set_SP_register(x) __set_MSP(x) 63 | #define __get_interrupt_state() __get_PRIMASK() 64 | #define __set_interrupt_state(x) __set_PRIMASK(x) 65 | #define __enable_interrupt() __asm(" cpsie i") 66 | #define __enable_interrupts() __asm(" cpsie i") 67 | #define __disable_interrupt() __asm(" cpsid i") 68 | #define __disable_interrupts() __asm(" cpsid i") 69 | #define __no_operation() __asm(" nop") 70 | 71 | // Intrinsics without ARM equivalents 72 | #define __bcd_add_short(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 73 | #define __bcd_add_long(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 74 | #define __bcd_add_long_long(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 75 | #define __even_in_range(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 76 | #define __data20_write_char(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 77 | #define __data20_write_short(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 78 | #define __data20_write_long(x,y) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 79 | #define __never_executed() { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 80 | #define __op_code() { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 81 | #define __code_distance() { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 82 | #define __bic_SR_register(x) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 83 | #define __bis_SR_register(x) { while(1); /* Using not-supported MSP430 intrinsic. No replacement available. */ } 84 | #define __bis_SR_register_on_exit(x) { while(1); /* Using not-supported MSP430 intrinsic. Recommended to write to SCS_SCR register. */ } 85 | #define __bic_SR_register_on_exit(x) { while(1); /* Using not-supported MSP430 intrinsic. Recommended to write to SCS_SCR register. */ } 86 | #define __delay_cycles(x) { while(1); /* Using not-supported MSP430 intrinsic. Recommended to use a timer or a custom for loop. */ } 87 | 88 | // Intrinsics without ARM equivalents 89 | #define __low_power_mode_0() { __sleep(); } 90 | #define __low_power_mode_1() { __sleep(); } 91 | #define __low_power_mode_2() { __sleep(); } 92 | #define __low_power_mode_3() { __deep_sleep(); } 93 | #define __low_power_mode_4() { __deep_sleep(); } 94 | #define __data16_read_addr(x) (*((volatile uint32_t *)(x))) 95 | #define __data20_read_char(x) (*((volatile uint8_t *)(x))) 96 | #define __data20_read_short(x) (*((volatile uint16_t *)(x))) 97 | #define __data20_read_long(x) (*((volatile uint32_t *)(x))) 98 | #define __data16_write_addr(x,y) { (*((volatile uint32_t *)(x))) } 99 | #define __get_SR_register() 0 100 | #define __get_SR_register_on_exit() 0 101 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/include/msp432/system_msp432p401r.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file system_msp432p401r.h 3 | * @brief CMSIS Cortex-M4F Device Peripheral Access Layer Header File for 4 | * MSP432P401R 5 | * @version 2.200 6 | * @date 2016-05-09 7 | * 8 | * @note View configuration instructions embedded in comments 9 | * 10 | ******************************************************************************/ 11 | //***************************************************************************** 12 | // 13 | // Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ 14 | // 15 | // Redistribution and use in source and binary forms, with or without 16 | // modification, are permitted provided that the following conditions 17 | // are met: 18 | // 19 | // Redistributions of source code must retain the above copyright 20 | // notice, this list of conditions and the following disclaimer. 21 | // 22 | // Redistributions in binary form must reproduce the above copyright 23 | // notice, this list of conditions and the following disclaimer in the 24 | // documentation and/or other materials provided with the 25 | // distribution. 26 | // 27 | // Neither the name of Texas Instruments Incorporated nor the names of 28 | // its contributors may be used to endorse or promote products derived 29 | // from this software without specific prior written permission. 30 | // 31 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 34 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 36 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 37 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 38 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 39 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 40 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 41 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 42 | // 43 | //***************************************************************************** 44 | 45 | #ifndef SYSTEM_MSP432P401R_H 46 | #define SYSTEM_MSP432P401R_H 47 | 48 | #ifdef __cplusplus 49 | extern "C" { 50 | #endif 51 | 52 | #include 53 | 54 | extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ 55 | 56 | 57 | /** 58 | * Initialize the system 59 | * 60 | * @param none 61 | * @return none 62 | * 63 | * @brief Setup the microcontroller system. 64 | * 65 | * Performs the following initialization steps: 66 | * 1. Enables the FPU 67 | * 2. Halts the WDT 68 | * 3. Enables all SRAM banks 69 | * 4. Sets up power __REGULATOR and VCORE 70 | * 5. Enable Flash wait states if needed 71 | * 6. Change MCLK to desired frequency 72 | * 7. Enable Flash read buffering 73 | */ 74 | extern void SystemInit (void); 75 | 76 | /** 77 | * Update SystemCoreClock variable 78 | * 79 | * @param none 80 | * @return none 81 | * 82 | * @brief Updates the SystemCoreClock with current core Clock 83 | * retrieved from cpu registers. 84 | */ 85 | extern void SystemCoreClockUpdate (void); 86 | 87 | #ifdef __cplusplus 88 | } 89 | #endif 90 | 91 | #endif /* SYSTEM_MSP432P401R_H */ 92 | 93 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/msp432p401r.lds: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * 3 | * Copyright (C) 2012 - 2016 Texas Instruments Incorporated - http://www.ti.com/ 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 9 | * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the 15 | * distribution. 16 | * 17 | * Neither the name of Texas Instruments Incorporated nor the names of 18 | * its contributors may be used to endorse or promote products derived 19 | * from this software without specific prior written permission. 20 | * 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | * 33 | * GCC linker script for Texas Instruments MSP432P401R 34 | * 35 | * File creation date: 2016-05-09 36 | * 37 | ******************************************************************************/ 38 | 39 | MEMORY 40 | { 41 | MAIN_FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x00040000 42 | INFO_FLASH (RX) : ORIGIN = 0x00200000, LENGTH = 0x00004000 43 | SRAM_CODE (RWX): ORIGIN = 0x01000000, LENGTH = 0x00010000 44 | SRAM_DATA (RW) : ORIGIN = 0x20000000, LENGTH = 0x00010000 45 | } 46 | 47 | REGION_ALIAS("REGION_TEXT", MAIN_FLASH); 48 | REGION_ALIAS("REGION_INFO", INFO_FLASH); 49 | REGION_ALIAS("REGION_BSS", SRAM_DATA); 50 | REGION_ALIAS("REGION_DATA", SRAM_DATA); 51 | REGION_ALIAS("REGION_STACK", SRAM_DATA); 52 | REGION_ALIAS("REGION_HEAP", SRAM_DATA); 53 | REGION_ALIAS("REGION_ARM_EXIDX", MAIN_FLASH); 54 | REGION_ALIAS("REGION_ARM_EXTAB", MAIN_FLASH); 55 | 56 | SECTIONS { 57 | 58 | /* section for the interrupt vector area */ 59 | PROVIDE (_intvecs_base_address = 60 | DEFINED(_intvecs_base_address) ? _intvecs_base_address : 0x0); 61 | 62 | .intvecs (_intvecs_base_address) : AT (_intvecs_base_address) { 63 | KEEP (*(.intvecs)) 64 | } > REGION_TEXT 65 | 66 | /* The following three sections show the usage of the INFO flash memory */ 67 | /* INFO flash memory is intended to be used for the following */ 68 | /* device specific purposes: */ 69 | /* Flash mailbox for device security operations */ 70 | PROVIDE (_mailbox_base_address = 0x200000); 71 | 72 | .flashMailbox (_mailbox_base_address) : AT (_mailbox_base_address) { 73 | KEEP (*(.flashMailbox)) 74 | } > REGION_INFO 75 | 76 | /* TLV table for device identification and characterization */ 77 | PROVIDE (_tlv_base_address = 0x00201000); 78 | 79 | .tlvTable (_tlv_base_address) (NOLOAD) : AT (_tlv_base_address) { 80 | KEEP (*(.tlvTable)) 81 | } > REGION_INFO 82 | 83 | /* BSL area for device bootstrap loader */ 84 | PROVIDE (_bsl_base_address = 0x00202000); 85 | 86 | .bslArea (_bsl_base_address) : AT (_bsl_base_address) { 87 | KEEP (*(.bslArea)) 88 | } > REGION_INFO 89 | 90 | PROVIDE (_vtable_base_address = 91 | DEFINED(_vtable_base_address) ? _vtable_base_address : 0x20000000); 92 | 93 | .vtable (_vtable_base_address) : AT (_vtable_base_address) { 94 | KEEP (*(.vtable)) 95 | } > REGION_DATA 96 | 97 | .text : { 98 | CREATE_OBJECT_SYMBOLS 99 | KEEP (*(.text)) 100 | *(.text.*) 101 | . = ALIGN(0x4); 102 | KEEP (*(.ctors)) 103 | . = ALIGN(0x4); 104 | KEEP (*(.dtors)) 105 | . = ALIGN(0x4); 106 | __init_array_start = .; 107 | KEEP (*(.init_array*)) 108 | __init_array_end = .; 109 | *(.init) 110 | *(.fini*) 111 | } > REGION_TEXT AT> REGION_TEXT 112 | 113 | .rodata : { 114 | *(.rodata) 115 | *(.rodata.*) 116 | } > REGION_TEXT AT> REGION_TEXT 117 | 118 | .ARM.exidx : { 119 | __exidx_start = .; 120 | *(.ARM.exidx* .gnu.linkonce.armexidx.*) 121 | __exidx_end = .; 122 | } > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX 123 | 124 | .ARM.extab : { 125 | *(.ARM.extab* .gnu.linkonce.armextab.*) 126 | } > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB 127 | 128 | __etext = .; 129 | 130 | .data : { 131 | __data_load__ = LOADADDR (.data); 132 | __data_start__ = .; 133 | KEEP (*(.data)) 134 | KEEP (*(.data*)) 135 | . = ALIGN (4); 136 | __data_end__ = .; 137 | } > REGION_DATA AT> REGION_TEXT 138 | 139 | .bss : { 140 | __bss_start__ = .; 141 | *(.shbss) 142 | KEEP (*(.bss)) 143 | *(.bss.*) 144 | *(COMMON) 145 | . = ALIGN (4); 146 | __bss_end__ = .; 147 | } > REGION_BSS AT> REGION_BSS 148 | 149 | .heap : { 150 | __heap_start__ = .; 151 | end = __heap_start__; 152 | _end = end; 153 | __end = end; 154 | KEEP (*(.heap)) 155 | __heap_end__ = .; 156 | __HeapLimit = __heap_end__; 157 | } > REGION_HEAP AT> REGION_HEAP 158 | 159 | .stack (NOLOAD) : ALIGN(0x8) { 160 | _stack = .; 161 | __stack = .; 162 | KEEP(*(.stack)) 163 | } > REGION_STACK AT> REGION_STACK 164 | } 165 | 166 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/sources.mk: -------------------------------------------------------------------------------- 1 | #****************************************************************************** 2 | # Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | # 4 | # Redistribution, modification or use of this software in source or binary 5 | # forms is permitted as long as the files maintain this copyright. Users are 6 | # permitted to modify this and use it to learn about the field of embedded 7 | # software. Alex Fosdick and the University of Colorado are not liable for any 8 | # misuse of this material. 9 | # 10 | #***************************************************************************** 11 | 12 | ifeq ($(PLATFORM),MSP432) 13 | SOURCES = src/*.c 14 | 15 | INCLUDES = ../include/CMSIS \ 16 | ../include/common \ 17 | ../include/msp432 18 | 19 | else 20 | SOURCES = src/main.c \ 21 | src/memory.c \ 22 | src/data.c \ 23 | src/stats.c \ 24 | src/course1.c 25 | 26 | INCLUDES = ../include/common 27 | endif 28 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/src/course1.c: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | /** 12 | * @file course1.c 13 | * @brief This file is to be used to course 1 final assessment. 14 | * 15 | * @author Alex Fosdick 16 | * @date April 2, 2017 17 | * 18 | */ 19 | 20 | #include 21 | #include "../include/common/course1.h" 22 | #include "../include/common/memory.h" 23 | #include "../include/common/data.h" 24 | #include "../include/common/stats.h" 25 | #include "../include/common/platform.h" 26 | 27 | #define BASE_16 16 28 | #define BASE_10 10 29 | 30 | int8_t test_data1() { 31 | uint8_t * ptr; 32 | int32_t num = -4096; 33 | uint32_t digits; 34 | int32_t value; 35 | 36 | PRINTF("\ntest_data1();\n"); 37 | ptr = (uint8_t*) reserve_words( DATA_SET_SIZE_W ); 38 | 39 | if (! ptr ) 40 | { 41 | return TEST_ERROR; 42 | } 43 | 44 | digits = my_itoa( num, ptr, BASE_10); 45 | value = my_atoi( ptr, digits, BASE_10); 46 | #ifdef VERBOSE 47 | PRINTF(" Initial number: %d\n", num); 48 | PRINTF(" Final Decimal number: %d\n", value); 49 | #endif 50 | free_words( (uint32_t*)ptr ); 51 | 52 | if ( value != num ) 53 | { 54 | return TEST_ERROR; 55 | } 56 | return TEST_NO_ERROR; 57 | } 58 | 59 | int8_t test_data2() { 60 | uint8_t * ptr; 61 | int32_t num = 123456; 62 | uint32_t digits; 63 | int32_t value; 64 | 65 | PRINTF("test_data2():\n"); 66 | ptr = (uint8_t*) reserve_words( DATA_SET_SIZE_W ); 67 | 68 | digits = my_itoa( num, ptr, BASE_10); 69 | if (! ptr ) 70 | { 71 | return TEST_ERROR; 72 | } 73 | 74 | 75 | value = my_atoi( ptr, digits, BASE_10); 76 | #ifdef VERBOSE 77 | PRINTF(" Initial Decimal number: %d\n", num); 78 | PRINTF(" Final Decimal number: %d\n", value); 79 | #endif 80 | free_words( (uint32_t*)ptr ); 81 | 82 | if ( value != num ) 83 | { 84 | return TEST_ERROR; 85 | } 86 | return TEST_NO_ERROR; 87 | } 88 | 89 | int8_t test_memmove1() { 90 | uint8_t i; 91 | int8_t ret = TEST_NO_ERROR; 92 | uint8_t * set; 93 | uint8_t * ptra; 94 | uint8_t * ptrb; 95 | 96 | PRINTF("test_memmove1() - NO OVERLAP\n"); 97 | set = (uint8_t*) reserve_words( MEM_SET_SIZE_W ); 98 | 99 | if (! set ) 100 | { 101 | return TEST_ERROR; 102 | } 103 | 104 | ptra = &set[0]; 105 | ptrb = &set[16]; 106 | 107 | /* Initialize the set to test values */ 108 | for( i = 0; i < MEM_SET_SIZE_B; i++) 109 | { 110 | set[i] = i; 111 | } 112 | 113 | print_array(set, MEM_SET_SIZE_B); 114 | my_memmove(ptra, ptrb, TEST_MEMMOVE_LENGTH); 115 | print_array(set, MEM_SET_SIZE_B); 116 | 117 | for (i = 0; i < TEST_MEMMOVE_LENGTH; i++) 118 | { 119 | if (set[i + 16] != i) 120 | { 121 | ret = TEST_ERROR; 122 | } 123 | } 124 | 125 | free_words( (uint32_t*)set ); 126 | return ret; 127 | } 128 | 129 | int8_t test_memmove2() { 130 | uint8_t i; 131 | int8_t ret = TEST_NO_ERROR; 132 | uint8_t * set; 133 | uint8_t * ptra; 134 | uint8_t * ptrb; 135 | 136 | PRINTF("test_memmove2() -OVERLAP END OF SRC BEGINNING OF DST\n"); 137 | set = (uint8_t*) reserve_words(MEM_SET_SIZE_W); 138 | 139 | if (! set ) 140 | { 141 | return TEST_ERROR; 142 | } 143 | ptra = &set[0]; 144 | ptrb = &set[8]; 145 | 146 | /* Initialize the set to test values */ 147 | for( i = 0; i < MEM_SET_SIZE_B; i++) { 148 | set[i] = i; 149 | } 150 | 151 | print_array(set, MEM_SET_SIZE_B); 152 | my_memmove(ptra, ptrb, TEST_MEMMOVE_LENGTH); 153 | print_array(set, MEM_SET_SIZE_B); 154 | 155 | for (i = 0; i < TEST_MEMMOVE_LENGTH; i++) 156 | { 157 | if (set[i + 8] != i) 158 | { 159 | ret = TEST_ERROR; 160 | } 161 | } 162 | 163 | free_words( (uint32_t*)set ); 164 | return ret; 165 | } 166 | 167 | int8_t test_memmove3() { 168 | uint8_t i; 169 | int8_t ret = TEST_NO_ERROR; 170 | uint8_t * set; 171 | uint8_t * ptra; 172 | uint8_t * ptrb; 173 | 174 | PRINTF("test_memove3() - OVERLAP END OF DEST BEGINNING OF SRC\n"); 175 | set = (uint8_t*)reserve_words( MEM_SET_SIZE_W); 176 | 177 | if (! set ) 178 | { 179 | return TEST_ERROR; 180 | } 181 | ptra = &set[8]; 182 | ptrb = &set[0]; 183 | 184 | /* Initialize the set to test values */ 185 | for( i = 0; i < MEM_SET_SIZE_B; i++) 186 | { 187 | set[i] = i; 188 | } 189 | 190 | print_array(set, MEM_SET_SIZE_B); 191 | my_memmove(ptra, ptrb, TEST_MEMMOVE_LENGTH); 192 | print_array(set, MEM_SET_SIZE_B); 193 | 194 | for (i = 0; i < TEST_MEMMOVE_LENGTH; i++) 195 | { 196 | if (set[i] != (i + 8)) 197 | { 198 | ret = TEST_ERROR; 199 | } 200 | } 201 | 202 | 203 | free_words( (uint32_t*)set ); 204 | return ret; 205 | 206 | } 207 | 208 | int8_t test_memcopy() { 209 | uint8_t i; 210 | int8_t ret = TEST_NO_ERROR; 211 | uint8_t * set; 212 | uint8_t * ptra; 213 | uint8_t * ptrb; 214 | 215 | PRINTF("test_memcopy()\n"); 216 | set = (uint8_t*) reserve_words(MEM_SET_SIZE_W); 217 | 218 | if (! set ) 219 | { 220 | return TEST_ERROR; 221 | } 222 | ptra = &set[0]; 223 | ptrb = &set[16]; 224 | 225 | /* Initialize the set to test values */ 226 | for( i = 0; i < MEM_SET_SIZE_B; i++) { 227 | set[i] = i; 228 | } 229 | 230 | print_array(set, MEM_SET_SIZE_B); 231 | my_memcopy(ptra, ptrb, TEST_MEMMOVE_LENGTH); 232 | print_array(set, MEM_SET_SIZE_B); 233 | 234 | for (i = 0; i < TEST_MEMMOVE_LENGTH; i++) 235 | { 236 | if (set[i+16] != i) 237 | { 238 | ret = TEST_ERROR; 239 | } 240 | } 241 | 242 | free_words( (uint32_t*)set ); 243 | return ret; 244 | } 245 | 246 | int8_t test_memset() 247 | { 248 | uint8_t i; 249 | uint8_t ret = TEST_NO_ERROR; 250 | uint8_t * set; 251 | uint8_t * ptra; 252 | uint8_t * ptrb; 253 | 254 | PRINTF("test_memset()\n"); 255 | set = (uint8_t*)reserve_words(MEM_SET_SIZE_W); 256 | if (! set ) 257 | { 258 | return TEST_ERROR; 259 | } 260 | ptra = &set[0]; 261 | ptrb = &set[16]; 262 | 263 | /* Initialize the set to test values */ 264 | for( i = 0; i < MEM_SET_SIZE_B; i++) 265 | { 266 | set[i] = i; 267 | } 268 | 269 | print_array(set, MEM_SET_SIZE_B); 270 | my_memset(ptra, MEM_SET_SIZE_B, 0xFF); 271 | print_array(set, MEM_SET_SIZE_B); 272 | my_memzero(ptrb, MEM_ZERO_LENGTH); 273 | print_array(set, MEM_SET_SIZE_B); 274 | 275 | /* Validate Set & Zero Functionality */ 276 | for (i = 0; i < MEM_ZERO_LENGTH; i++) 277 | { 278 | if (set[i] != 0xFF) 279 | { 280 | ret = TEST_ERROR; 281 | } 282 | if (set[16 + i] != 0) 283 | { 284 | ret = TEST_ERROR; 285 | } 286 | } 287 | 288 | free_words( (uint32_t*)set ); 289 | return ret; 290 | } 291 | 292 | int8_t test_reverse() 293 | { 294 | uint8_t i; 295 | int8_t ret = TEST_NO_ERROR; 296 | int32 * copy; 297 | uint8_t set[MEM_SET_SIZE_B] = {0x3F, 0x73, 0x72, 0x33, 0x54, 0x43, 0x72, 0x26, 298 | 0x48, 0x63, 0x20, 0x66, 0x6F, 0x00, 0x20, 0x33, 299 | 0x72, 0x75, 0x74, 0x78, 0x21, 0x4D, 0x20, 0x40, 300 | 0x20, 0x24, 0x7C, 0x20, 0x24, 0x69, 0x68, 0x54 301 | }; 302 | 303 | PRINTF("test_reverse()\n"); 304 | copy = reserve_words(MEM_SET_SIZE_W); 305 | if (! copy ) 306 | { 307 | return TEST_ERROR; 308 | } 309 | 310 | my_memcopy(set, copy, MEM_SET_SIZE_B); 311 | 312 | print_array(set, MEM_SET_SIZE_B); 313 | my_reverse(set, MEM_SET_SIZE_B); 314 | print_array(set, MEM_SET_SIZE_B); 315 | 316 | for (i = 0; i < MEM_SET_SIZE_B; i++) 317 | { 318 | if (set[i] != copy[MEM_SET_SIZE_B - i - 1]) 319 | { 320 | ret = TEST_ERROR; 321 | } 322 | } 323 | 324 | free_words( (uint32_t*)copy ); 325 | return ret; 326 | } 327 | 328 | void course1(void) 329 | { 330 | uint8_t i; 331 | int8_t failed = 0; 332 | int8_t results[TESTCOUNT]; 333 | 334 | 335 | results[0] = test_data1(); 336 | results[1] = test_data2(); 337 | results[2] = test_memmove1(); 338 | results[3] = test_memmove2(); 339 | results[4] = test_memmove3(); 340 | results[5] = test_memcopy(); 341 | results[7] = test_reverse(); 342 | results[6] = test_memset(); 343 | 344 | 345 | 346 | for ( i = 0; i < TESTCOUNT; i++) 347 | { 348 | failed += results[i]; 349 | } 350 | 351 | PRINTF("--------------------------------\n"); 352 | PRINTF("Test Results:\n"); 353 | PRINTF(" PASSED: %d / %d\n", (TESTCOUNT - failed), TESTCOUNT); 354 | PRINTF(" FAILED: %d / %d\n", failed, TESTCOUNT); 355 | PRINTF("--------------------------------\n"); 356 | } 357 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/src/data.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file data.c 3 | * @brief Abstraction of the basic data manipulation operations 4 | * 5 | * This implementation file provides an abstraction of the basic data manipulation operations 6 | * like converting integer to string and vice versa via function calls. 7 | * 8 | * @author Mohammed Abdelalim 9 | * @date 26/10/2020 10 | * 11 | */ 12 | 13 | 14 | #include "../include/common/memory.h" 15 | #include "../include/common/data.h" 16 | #include "../include/common/platform.h" 17 | #include 18 | #include 19 | 20 | uint8 my_itoa(int32 data, uint8 * ptr, uint32 base) 21 | { 22 | uint8 isNegative= 0; 23 | uint8 digitCounter= 0; 24 | uint8 remainder= 0; 25 | 26 | // Check if data is zero 27 | if (data == 0) 28 | { 29 | *(ptr) = '0'; 30 | *(ptr + 1) = '\0'; 31 | return 2; 32 | } 33 | 34 | // Check if data is negative 35 | if (data < 0) 36 | { 37 | isNegative = 1; 38 | data = data*-1; 39 | } 40 | // Convert int to ASCII for all bases 41 | while (data != 0) 42 | { 43 | remainder = data % base; 44 | *(ptr + digitCounter)= ( remainder > 9 ) ? ( remainder - 10 ) + 'a' : remainder + '0'; 45 | digitCounter++; 46 | data= data / base; 47 | } 48 | // Add -ve sign if negative data 49 | if (isNegative) 50 | { 51 | *(ptr + digitCounter) = '-'; 52 | digitCounter++; 53 | } 54 | digitCounter++; 55 | *(ptr + digitCounter) = '\0'; 56 | 57 | // Reverse the string index order 58 | my_reverse(ptr, (digitCounter - 1)); 59 | 60 | return digitCounter; 61 | } 62 | 63 | int32 my_atoi(uint8 * ptr, uint8 digits, uint32 base) 64 | { 65 | int32 number = 0; 66 | uint8 isNegative = 0; 67 | 68 | // Check sign 69 | if(*ptr == '-') 70 | { 71 | isNegative = 1; 72 | // Move on to the next digit 73 | ptr++; 74 | // One less digit to deal with 75 | digits--; 76 | } 77 | 78 | digits--; 79 | 80 | for(int i = 0; i < digits; i++) 81 | { 82 | number = number * base + *ptr - '0'; 83 | ptr++; 84 | } 85 | 86 | // Apply the negative sign if needed 87 | if(isNegative) 88 | { 89 | number = -number; 90 | } 91 | 92 | return number; 93 | } 94 | 95 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/src/main.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file main.c 3 | * 4 | * @author Mohammed Abdelalim 5 | * @date 26/10/2020 6 | * 7 | */ 8 | 9 | #include "../include/common/course1.h" 10 | #include "../include/common/memory.h" 11 | #include "../include/common/stats.h" 12 | #include "../include/common/data.h" 13 | #include "../include/common/platform.h" 14 | 15 | void main (void){ 16 | 17 | #ifdef COURSE1 18 | course1(); 19 | #endif 20 | } 21 | 22 | -------------------------------------------------------------------------------- /Assignments/Final Assignment/src/memory.c: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (C) 2017 by Alex Fosdick - University of Colorado 3 | * 4 | * Redistribution, modification or use of this software in source or binary 5 | * forms is permitted as long as the files maintain this copyright. Users are 6 | * permitted to modify this and use it to learn about the field of embedded 7 | * software. Alex Fosdick and the University of Colorado are not liable for any 8 | * misuse of this material. 9 | * 10 | *****************************************************************************/ 11 | /** 12 | * @file memory.c 13 | * @brief Abstraction of memory read, write, and manipulation operations 14 | * 15 | * This implementation file provides an abstraction of reading and 16 | * writing to memory via function calls. 17 | * 18 | * @author Alex Fosdick 19 | * @date 1/4/2017 20 | * @edited 24/10/2020 by Mohammed Abdelalim 21 | * 22 | */ 23 | #include "../include/common/memory.h" 24 | #include 25 | 26 | /*********************************************************** 27 | Function Definitions 28 | ***********************************************************/ 29 | void set_value(char * ptr, unsigned int index, char value){ 30 | ptr[index] = value; 31 | } 32 | 33 | void clear_value(char * ptr, unsigned int index){ 34 | set_value(ptr, index, 0); 35 | } 36 | 37 | char get_value(char * ptr, unsigned int index){ 38 | return ptr[index]; 39 | } 40 | 41 | void set_all(char * ptr, char value, unsigned int size){ 42 | unsigned int i; 43 | for(i = 0; i < size; i++) { 44 | set_value(ptr, i, value); 45 | } 46 | } 47 | 48 | void clear_all(char * ptr, unsigned int size){ 49 | set_all(ptr, 0, size); 50 | } 51 | 52 | uint8 * my_memmove(uint8 * src, uint8 * dst, uint8 length){ 53 | 54 | int16 datatoMove[length]; 55 | // Copy to buffer 56 | my_memcopy(src, datatoMove, length); 57 | 58 | // Copy from buffer to destination 59 | my_memcopy(datatoMove, dst, length); 60 | 61 | return dst; 62 | } 63 | 64 | uint8 * my_memcopy(uint8 * src, uint8 * dst, uint8 length){ 65 | for (int dataCount=0; dataCount 26 | #include "../include/common/stats.h" 27 | #include "../include/common/platform.h" 28 | 29 | /* Size of the Dataset */ 30 | #define SIZE (40) 31 | 32 | /* void main() { 33 | 34 | unsigned char test[SIZE] = { 34, 201, 190, 154, 8, 194, 2, 6, 35 | 114, 88, 45, 76, 123, 87, 25, 23, 36 | 200, 122, 150, 90, 92, 87, 177, 244, 37 | 201, 6, 12, 60, 8, 2, 5, 67, 38 | 7, 87, 250, 230, 99, 3, 100, 90}; 39 | 40 | // Other Variable Declarations Go Here 41 | unsigned char minimum = 0; 42 | unsigned char maximum = 0; 43 | float mean = 0; 44 | unsigned char median = 0; 45 | 46 | Statistics and Printing Functions Go Here 47 | PRINTF("Array before sorting: \n"); 48 | print_array(&test, SIZE); 49 | median = find_median(&test, SIZE); 50 | mean = find_mean(&test, SIZE); 51 | maximum = find_maximum(&test, SIZE); 52 | minimum = find_minimum(&test, SIZE); 53 | print_statistics(minimum, maximum, mean, median); 54 | sort_array(&test, SIZE); 55 | PRINTF("Array after sorting: \n"); 56 | print_array(&test, SIZE); 57 | } */ 58 | 59 | void print_statistics (unsigned char minimum, unsigned char maximum, float mean, unsigned char median){ 60 | printf("The minimum is %d \n", minimum); 61 | printf("The maximum is %d \n", maximum); 62 | printf("The mean is %f \n", mean); 63 | printf("The median is %d \n", median); 64 | } 65 | 66 | 67 | void print_array (unsigned char *array, unsigned int counter){ 68 | // The function is required to work only if the user defines the "VERBOSE" macro in command line interface. 69 | #ifdef VERBOSE 70 | for (int i=0; i maximum){ 99 | maximum = *(array + i); 100 | } 101 | else {} // do nothing. 102 | } 103 | return maximum; 104 | } 105 | 106 | unsigned char find_minimum (unsigned char *array, unsigned int counter){ 107 | unsigned char minimum = *array; // initalize the minimum variable with the value of the first array element 108 | for (int i=1; i array[index +1] || array[index] == array[index +1]) { 124 | continue; 125 | } 126 | else if (array[index] < array[index +1]) { 127 | //swap elements// 128 | temp = array[index]; 129 | array[index] = array[index+1]; 130 | array[index+1] = temp; 131 | 132 | flag = 1; // a swap process has occurred at least once in this loop 133 | } 134 | } 135 | } 136 | while (flag ==1); // the array is not sorted as long as a swap operation is occurred at least once 137 | } 138 | -------------------------------------------------------------------------------- /Certificate.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Certificate.pdf -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/ESDevelopmentPlatform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/ESDevelopmentPlatform.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/Ganssle'sExample1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/Ganssle'sExample1.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/Ganssle'sExample2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/Ganssle'sExample2.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/Ganssle'sExample3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/Ganssle'sExample3.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/MSP432.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/MSP432.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/SCM Guidelines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/SCM Guidelines.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/androidRepo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/androidRepo.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/appleSoftwareSupport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/appleSoftwareSupport.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/branches.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/branches.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/branches2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/branches2.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/chipErrata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/chipErrata.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/collaboration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/collaboration.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/collaboration2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/collaboration2.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/commit.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/deltas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/deltas.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/electricalChars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/electricalChars.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/gitLinuxPerspective.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/gitLinuxPerspective.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/gitLog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/gitLog.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/gitWindowsPerspective.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/gitWindowsPerspective.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/gitWorkflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/gitWorkflow.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/kl25zSchematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/kl25zSchematic.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/legacySystems.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/legacySystems.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/onBoardDebugger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/onBoardDebugger.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/physicalSpecs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/physicalSpecs.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/productBrief.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/productBrief.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/referenceManual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/referenceManual.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/repo.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/selectorGuide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/selectorGuide.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/softwareTools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/softwareTools.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/thermalSpecs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/thermalSpecs.png -------------------------------------------------------------------------------- /Course Notes/1- Embedded System Development Components/Images/timingSpecs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/1- Embedded System Development Components/Images/timingSpecs.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/CTS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/CTS.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/CTS00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/CTS00.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/CTS01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/CTS01.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/IDEautoGeneration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/IDEautoGeneration.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/LinkerscriptTest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/LinkerscriptTest.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/NM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/NM.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/NM1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/NM1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/PHONY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/PHONY.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/Shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/Shell.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/abstractionInterface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/abstractionInterface.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/abstractionInterface2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/abstractionInterface2.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/afterLinking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/afterLinking.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/afterLocating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/afterLocating.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/archFlags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/archFlags.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/assemblyTranslation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/assemblyTranslation.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/binutils.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/binutils.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/buildEnvironment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/buildEnvironment.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/buildManually.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/buildManually.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/buildProcess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/buildProcess.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/buildingSW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/buildingSW.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/compileTimeSwitch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/compileTimeSwitch.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/compiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/compiler.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/constantExamples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/constantExamples.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/crossCompilation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/crossCompilation.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/crossCompilation2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/crossCompilation2.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/defundef.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/defundef.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/documenting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/documenting.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/dynamic&Linking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/dynamic&Linking.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/dynamicLib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/dynamicLib.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/esDevPlatform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/esDevPlatform.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/executableFileFormats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/executableFileFormats.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/gccOptions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/gccOptions.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/gccToolCheck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/gccToolCheck.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/gdb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/gdb.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/ifelse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/ifelse.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/ifelse2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/ifelse2.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/include.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/include.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/include2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/include2.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard2.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard3.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard4.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/includeGuard5.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/includingStandardLibs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/includingStandardLibs.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/largeCommands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/largeCommands.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/linkerError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/linkerError.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/linkerFlags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/linkerFlags.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/linkerFlags1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/linkerFlags1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/linkerscriptDetails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/linkerscriptDetails.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/linkerscriptExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/linkerscriptExample.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/linkerscriptExample1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/linkerscriptExample1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/macroFunction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/macroFunction.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/macroFunctionsExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/macroFunctionsExample.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/macroIssues.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/macroIssues.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/macroSubstitution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/macroSubstitution.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeAutomates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeAutomates.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeDefinition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeDefinition.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo2.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo3.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo4.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeDemo5.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample2.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample3.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample4.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample5.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makeExample6.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makefileSyntax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makefileSyntax.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makefileTargets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makefileTargets.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makefileVariables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makefileVariables.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makefileVariables1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makefileVariables1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makefileVariables2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makefileVariables2.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makefileVariables3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makefileVariables3.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makefiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makefiles.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/makefilesRules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/makefilesRules.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/memoryMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/memoryMap.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/memoryMap1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/memoryMap1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/memoryMap2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/memoryMap2.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/moduleDesign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/moduleDesign.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/nativeCompilation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/nativeCompilation.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/objcopy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/objcopy.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/objdump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/objdump.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/objdump1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/objdump1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/overridingVariables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/overridingVariables.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/overridingVariables1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/overridingVariables1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/patternMatching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/patternMatching.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/patternMatching1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/patternMatching1.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/pragma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/pragma.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/pragma2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/pragma2.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/readelf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/readelf.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/sizeUtil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/sizeUtil.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/specialVariables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/specialVariables.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/static&Linking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/static&Linking.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/staticLib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/staticLib.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/superMake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/superMake.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/swTools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/swTools.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/symbolsCompiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/symbolsCompiler.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/toolchain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/toolchain.png -------------------------------------------------------------------------------- /Course Notes/2- Compilation with GCC and GNU Make/Images/typicalBuildProcess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/2- Compilation with GCC and GNU Make/Images/typicalBuildProcess.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/Access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/Access.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/CPURegisters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/CPURegisters.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/EEPROM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/EEPROM.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/allocatedDataChars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/allocatedDataChars.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/armRegisters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/armRegisters.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/armRegisters1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/armRegisters1.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/auto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/auto.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/bootloader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/bootloader.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/callingConvention.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/callingConvention.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/capacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/capacity.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/choosingPlatform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/choosingPlatform.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/codeMemory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/codeMemory.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/codeSubsegments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/codeSubsegments.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/codeSubsegments2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/codeSubsegments2.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/const.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/const.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/dataAllocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/dataAllocation.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/dataSegment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/dataSegment.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/dataSegment2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/dataSegment2.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/dynamicAllocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/dynamicAllocation.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/extern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/extern.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/extraEEPROM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/extraEEPROM.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/extraEEPROM1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/extraEEPROM1.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/failedAllocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/failedAllocation.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/failedAllocation1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/failedAllocation1.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/failedAllocation2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/failedAllocation2.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/free.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/free.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/heap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/heap.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/heap1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/heap1.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/heapCons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/heapCons.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/heapFunctions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/heapFunctions.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/heapScope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/heapScope.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/hierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/hierarchy.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/init.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/init1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/init1.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/latency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/latency.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/linkerFile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/linkerFile.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/linkerScript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/linkerScript.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/linkerScript2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/linkerScript2.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/linkerfiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/linkerfiles.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/locator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/locator.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/malloc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/malloc.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/memoryController.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/memoryController.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/memoryHierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/memoryHierarchy.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/memoryMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/memoryMap.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/memoryModels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/memoryModels.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/platform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/platform.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/ramVsFlash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/ramVsFlash.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/realloc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/realloc.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/register.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/registerContents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/registerContents.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/registerDefinitionFiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/registerDefinitionFiles.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/registers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/registers.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/sizeof.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/sizeof.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/stack.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/stackFrame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/stackFrame.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/stackFrames.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/stackFrames.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/stackFrames1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/stackFrames1.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/stackGrowth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/stackGrowth.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/stackOperations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/stackOperations.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/stackoverflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/stackoverflow.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/static.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/static.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/storageClasses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/storageClasses.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/subfamilies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/subfamilies.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/subsegments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/subsegments.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/textSection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/textSection.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/typeModifiers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/typeModifiers.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/typeQualifiers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/typeQualifiers.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/typeQualifiers1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/typeQualifiers1.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/variableTypes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/variableTypes.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/vectorTable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/vectorTable.png -------------------------------------------------------------------------------- /Course Notes/3- Memory Types, Segments and Management/Images/vectorTable1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Course Notes/3- Memory Types, Segments and Management/Images/vectorTable1.png -------------------------------------------------------------------------------- /Images/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Images/copyright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MohammAAA/Introduction-to-Embedded-Systems-Software-and-Development-Environments/886b4234f715709f4cab2d423f9aee448abbaab3/Images/copyright.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Introduction-to-Embedded-Systems-Software-and-Development-Environments 2 | This repo contains my personal notes and programming assignments for the Coursera's "Introduction to embedded systems software and development environments" course by University of Colorado Boulder. 3 | The course is instructed by Eng. Alex Fosdick 4 | - The course is one of the most powerful online courses I've ever taken. 5 | - The first week introdcues the embedded systems, software configuration management, C standardization, coding standards, documenting, and version control with git, the week assignment is to write a simple C program to do some operations on arrays, apply the learned topics on that code such as writing high quality, documented code as well as working with git 6 | - Second week illustrates the full build process as well as working with makefiles, the week assignment is to write a makefile automating the whole building process for 2 different architectures, generating dependancy files as well as memory map file for the application. 7 | - Third week illustrates the memory types, segments, and subsegments used in embedded systems, the week assignment is to analyze a project with some GCC tools like `objdump` and `nm` as well as the memory map file and determine each variable is stored in which segement and subsegment in memory. 8 | - Fourth week is just an assignment that integrates all the learned topics throughout the course. 9 | - Most images I used in the course notes are from the course slides 10 | 11 | ![](Images/copyright.png) 12 | --------------------------------------------------------------------------------