Ejemplo n.º 1
0
    def __init__(self, ksdkProj):
        """ Init class

        :param ksdkProj: Instance of a KSDK project
        """

        self.parent = ksdkProj.workSpace
        self.userName = ksdkProj.userName
        self.date = ksdkProj.date
        self.name = ksdkProj.name
        self.isLinked = ksdkProj.isLinked
        self.device = ksdkProj.device
        self.parentProject = ksdkProj
        self.projRelPath = ''
        self.wsRelPath = ''

        ## Determine if this is a USB or standard project
        self.projType = 'usb' if ksdkProj.useUSB else 'std'

        # Create local copies of the tag dictionaries
        if self.projType == 'std':
            self.cDefines = copy.deepcopy(ksdkKdsNew.CDEFINES)
            self.linkDefines = copy.deepcopy(ksdkKdsNew.LINKDEFINES)
        else:
            self.cDefines = copy.deepcopy(ksdkKdsNew.CDEFINES_USB)
            self.linkDefines = copy.deepcopy(ksdkKdsNew.LINKDEFINES_USB)
            self.linkLibs = copy.deepcopy(LINKLIBS_USB)

        self.cIncludes = copy.deepcopy(ksdkKdsNew.CINCLUDES)
        self.linkOut = copy.deepcopy(ksdkKdsNew.LINKOUT)
        self.linkLd = copy.deepcopy(ksdkKdsNew.LINKLD)

        self.asmDefines = copy.deepcopy(ksdkKdsNew.ASMDEFINES)
        self.asmIncludes = copy.deepcopy(ksdkKdsNew.ASMINCLUDES)
        
        TEMPLATES = copy.deepcopy(ksdkKdsNew.TEMPLATES)
        
        #add board templates
        templateNames = self.parentProject.parent.getBoardFilesList()
        for t in templateNames:
            TEMPLATES.append({ksdkKdsNew.NAME: ksdkKdsNew.BOARD_FOLDER_NAME + '/' + t, ksdkKdsNew.TYPE:'1', ksdkKdsNew.LOCATIONURI: 'PARENT-1-PROJECT_LOC/' + t})
        
        #FIXME Radka load it from manifest    
        PROJ_STARTUP =\
        [\
         {'name': 'startup', 'type': '2', 'locationURI': 'virtual:/virtual'}, \
         {'name': 'startup/startup_xxx.S', 'type': '1', 'locationURI': 'PROJECT_KSDK/' + ksdkKdsNew.KSDK_DIRECTORY_PREFIX + 'gcc/startup_xxx.S'}, \
         {'name': 'startup/system_xxx.c', 'type': '1', 'locationURI': 'PROJECT_KSDK/' + ksdkKdsNew.KSDK_DIRECTORY_PREFIX + 'system_xxx.c'}, \
         {'name': 'startup/system_xxx.h', 'type': '1', 'locationURI': 'PROJECT_KSDK/' + ksdkKdsNew.KSDK_DIRECTORY_PREFIX + 'system_xxx.h'}, \
         {'name': ksdkKdsNew.LINKER_NAME_CONSTANT, 'type': '1', 'locationURI': 'PROJECT_KSDK/' + ksdkKdsNew.KSDK_DIRECTORY_PREFIX + '/gcc/' + ksdkKdsNew.LINKER_NAME_CONSTANT}, \
         {'name': Constants.DRIVERS_FOLDER, 'type': '2', 'locationURI': 'virtual:/virtual'}, \
         {'name': Constants.UTILITIES_FOLDER, 'type': '2', 'locationURI': 'virtual:/virtual'}, \
         {'name': Constants.CMSIS_FOLDER, 'type': '2', 'locationURI': 'virtual:/virtual'}, \
        ]
            
        #add drivers
        #PROJ_STARTUP = copy.deepcopy(ksdkKdsNew.PROJ_STARTUP)    
        for d in (self.parentProject.parent.getBoardFilesForBoardProjects(False, True, boardName = self.parentProject.board[1], device = ksdkProj.device[1], rtosType = ksdkProj.rtos) + self.parentProject.parent.getDriversExcludedFromBuild(device = ksdkProj.device[1])):
            PROJ_STARTUP.append({'name': (Constants.DRIVERS_FOLDER if (d[ksdkObj.LOCATION_URI_KEY].find(Constants.DRIVERS_FOLDER) != -1) else Constants.UTILITIES_FOLDER) + '/' + d[ksdkObj.NAME_KEY], 'type':'1', 'locationURI': 'PROJECT_KSDK/' + d[ksdkObj.LOCATION_URI_KEY]}) 
        
        #add CMSIS
        for d in self.parentProject.parent.getCMSISFiles(ksdkProj.device[1]):
            PROJ_STARTUP.append({'name': 'CMSIS' + os.sep + d[ksdkObj.NAME_KEY] ,'type':'1','locationURI':'PROJECT_KSDK/' + d[ksdkObj.LOCATION_URI_KEY]})     
        
        self.projTemplates = TEMPLATES 
        
        PROJ_SOURCES = [{ksdkKdsNew.NAME: Constants.SOURCES_FOLDER, ksdkKdsNew.TYPE: '2', ksdkKdsNew.LOCATIONURI: 'virtual:/virtual'},{ksdkKdsNew.NAME: Constants.SOURCES_FOLDER + '/main.c', ksdkKdsNew.TYPE: '1', ksdkKdsNew.LOCATIONURI: 'PARENT-1-PROJECT_LOC/main.c'}]
        if self.parentProject.isQuickGenerate:
            PROJ_SOURCES.append({ksdkKdsNew.NAME: Constants.SOURCES_FOLDER + '/main.h', ksdkKdsNew.TYPE: '1', ksdkKdsNew.LOCATIONURI: 'PARENT-1-PROJECT_LOC/main.h'})

        self.archType = CortexType.getCortexType(self.device[4])
        toolType = ToolchainType.AtollicStudio
        if ksdkProj.rtos != 'bm':
            pathList = []
            folder_name = ''
            if ksdkProj.rtos == 'freertos':
                pathList = self.parentProject.parent.getMapOfFreertosPaths(self.archType, toolType, self.parentProject.board[1])
                folder_name = ksdkKdsNew.FREERTOS_DIRECTORY_NAME
                for name in self.parentProject.parent.getRTOSTemplateFilesNames(RTOSType.FreeRTOS):
                    PROJ_SOURCES.append({ksdkKdsNew.NAME: Constants.SOURCES_FOLDER + '/' + name, ksdkKdsNew.TYPE:'1', ksdkKdsNew.LOCATIONURI: 'PARENT-1-PROJECT_LOC/' + name})
            elif ksdkProj.rtos == 'ucosii':
                pathList = self.parentProject.parent.getMapOfuCOSIIPaths(self.archType, toolType, self.parentProject.board[1])
                folder_name = ksdkKdsNew.UCOSII_DIRECTORY_NAME
                for name in self.parentProject.parent.getRTOSTemplateFilesNames(RTOSType.uCOSII):
                    PROJ_SOURCES.append({ksdkKdsNew.NAME: Constants.SOURCES_FOLDER + '/' + name, ksdkKdsNew.TYPE:'1', ksdkKdsNew.LOCATIONURI: 'PARENT-1-PROJECT_LOC/' + name})
            elif ksdkProj.rtos == 'ucosiii':
                pathList = self.parentProject.parent.getMapOfuCOSIIIPaths(self.archType, toolType, self.parentProject.board[1])
                folder_name = ksdkKdsNew.UCOSIII_DIRECTORY_NAME
                for name in self.parentProject.parent.getRTOSTemplateFilesNames(RTOSType.uCOSIII):
                    PROJ_SOURCES.append({ksdkKdsNew.NAME: Constants.SOURCES_FOLDER + '/' + name, ksdkKdsNew.TYPE:'1', ksdkKdsNew.LOCATIONURI: 'PARENT-1-PROJECT_LOC/' + name})

            for dictionary in pathList:
                dictionary[ksdkObj.LOCATION_URI_KEY] = ksdkKdsNew.PROJECT_KSDK + '/' + dictionary[ksdkObj.LOCATION_URI_KEY]
                dictionary[ksdkObj.NAME_KEY] = folder_name + '/' + dictionary[ksdkObj.NAME_KEY]
                dictionary['type'] = '1'
            
            pathList.append({'name': folder_name, 'type': '2', 'locationURI': 'virtual:/virtual'})
            self.projRtos = copy.deepcopy(pathList)
        
        self.projStartup = copy.deepcopy(PROJ_STARTUP)
        self.projSources = copy.deepcopy(PROJ_SOURCES)
        return
Ejemplo n.º 2
0
    def __init__(self, ksdkProj):
        """ Init class

        :param ksdkProj: Instance of a KSDK project
        """

        self.parent = ksdkProj.workSpace
        self.userName = ksdkProj.userName
        self.date = ksdkProj.date
        self.name = ksdkProj.name
        self.isLinked = ksdkProj.isLinked
        self.device = ksdkProj.device
        self.parentProject = ksdkProj

        self.projRelPath = ''
        self.wsRelPath = ''

        ## Determine if this is a USB or standard project
        self.projType = 'usb' if ksdkProj.useUSB else 'std'

        # Create local copies of the tag dictionaries
        if self.projType == 'std':
            self.cDefines = copy.deepcopy(CDEFINES)
            self.linkDefines = copy.deepcopy(LINKDEFINES)
        else:
            self.cDefines = copy.deepcopy(CDEFINES_USB)
            self.linkDefines = copy.deepcopy(LINKDEFINES_USB)
            self.linkLibs = copy.deepcopy(LINKLIBS_USB)

        self.cIncludes = copy.deepcopy(CINCLUDES)
        self.asmDefines = copy.deepcopy(ASMDEFINES)
        self.asmIncludes = copy.deepcopy(ASMINCLUDES)
        self.linkOut = copy.deepcopy(LINKOUT)
        self.linkIcf = copy.deepcopy(LINKICF)
        
        #add board templates
        TEMPLATES['file'] = [PROJECT_DIRS + '/../' + t for t in self.parentProject.parent.getBoardFilesList()]
            
        #add drivers
        allDriversListOfDicts = self.parentProject.parent.getBoardFilesForBoardProjects(False, True, boardName = self.parentProject.board[1], device = ksdkProj.device[1], rtosType = ksdkProj.rtos) + self.parentProject.parent.getDriversExcludedFromBuild(device = ksdkProj.device[1])
        allExcludedDriversPaths = [d[ksdkObj.LOCATION_URI_KEY] for d in self.parentProject.parent.getDriversExcludedFromBuild(device = ksdkProj.device[1])]
        DRIVERS[FILE_KEY_IN_DICT] = [d[ksdkObj.LOCATION_URI_KEY] for d in allDriversListOfDicts if (d[ksdkObj.LOCATION_URI_KEY].find(Constants.DRIVERS_FOLDER) != -1)]
        DRIVERS[EXCLUDED_LIST] = [(True if f in allExcludedDriversPaths else False) for f in DRIVERS[FILE_KEY_IN_DICT]]
        UTILITIES[FILE_KEY_IN_DICT] = [d[ksdkObj.LOCATION_URI_KEY] for d in allDriversListOfDicts if (d[ksdkObj.LOCATION_URI_KEY].find(Constants.UTILITIES_FOLDER) != -1)]
        UTILITIES[EXCLUDED_LIST] = [(True if f in allExcludedDriversPaths else False) for f in UTILITIES[FILE_KEY_IN_DICT]]
        
        self.templates = TEMPLATES 
        self.drivers = DRIVERS
        self.utilities = UTILITIES
        self.linkerFile = 'devices/' + ksdkProj.device[1] + '/iar/' + ksdkProj.device[0] + '_flash.icf'
        
        self.ewpStartup = copy.deepcopy(EWP_STARTUP)
        
        EWP_SOURCES = {'name': 'sources', 'file': [PROJECT_DIRS + '/../main.c']}

        #add main.h only for quick generation
        if self.parentProject.isQuickGenerate:
            EWP_SOURCES[FILE_KEY_IN_DICT].append(PROJECT_DIRS + '/../main.h')
        
        
        listOfCMSISDict = self.parentProject.parent.getCMSISFiles(ksdkProj.device[1])
        cmsisFilePaths = [d[ksdkObj.LOCATION_URI_KEY] for d in listOfCMSISDict]        
        PROJ_CMSIS =\
        {NAME_KEY_IN_DICT: 'CMSIS', 'file': cmsisFilePaths }
        
        self.projCMSISFiles = PROJ_CMSIS
        self.archType = CortexType.getCortexType(self.device[4])
        toolType = ToolchainType.IARname
        if ksdkProj.rtos != 'bm':
            mapOfFiles = []
            folderName = ''
            if ksdkProj.rtos == 'freertos':
                mapOfFiles = self.parentProject.parent.getMapOfFreertosPaths(self.archType, toolType, self.parentProject.board[1])
                folderName = ksdkKdsNew.FREERTOS_DIRECTORY_NAME
                for name in self.parentProject.parent.getRTOSTemplateFilesNames(RTOSType.FreeRTOS):
                    EWP_SOURCES[FILE_KEY_IN_DICT].append(PROJECT_DIRS + '/../' + name)
            elif ksdkProj.rtos == 'ucosii':
                mapOfFiles = self.parentProject.parent.getMapOfuCOSIIPaths(self.archType, toolType, self.parentProject.board[1])
                folderName = ksdkKdsNew.UCOSII_DIRECTORY_NAME
                for name in self.parentProject.parent.getRTOSTemplateFilesNames(RTOSType.uCOSII):
                    EWP_SOURCES[FILE_KEY_IN_DICT].append(PROJECT_DIRS + '/../' + name)
            elif ksdkProj.rtos == 'ucosiii':
                mapOfFiles = self.parentProject.parent.getMapOfuCOSIIIPaths(self.archType, toolType, self.parentProject.board[1])
                folderName = ksdkKdsNew.UCOSIII_DIRECTORY_NAME
                for name in self.parentProject.parent.getRTOSTemplateFilesNames(RTOSType.uCOSIII):
                    EWP_SOURCES[FILE_KEY_IN_DICT].append(PROJECT_DIRS + '/../' + name)
                
            self.ewpRtos = {NAME_KEY_IN_DICT: folderName, FILE_KEY_IN_DICT: [dictionary[ksdkObj.LOCATION_URI_KEY] for dictionary in mapOfFiles]}
            
            
        self.ewpSources = copy.deepcopy(EWP_SOURCES)

        # Copy dictionaries for .eww batch buildss
        self.wsBatchAll = copy.deepcopy(EWW_BATCH_ALL)
        self.wsBatchDbg = copy.deepcopy(EWW_BATCH_DBG)
        self.wsBatchRls = copy.deepcopy(EWW_BATCH_RLS)

        # Copy project path dictionary
        self.projPaths = copy.deepcopy(EWW_PROJECTS)
        return
Ejemplo n.º 3
0
    def __init__(self, ksdkProj):
        """ Init class

        :param ksdkProj: Instance of a KSDK project
        """

        self.parent = ksdkProj.workSpace
        self.userName = ksdkProj.userName
        self.date = ksdkProj.date
        self.name = ksdkProj.name
        self.isLinked = ksdkProj.isLinked
        self.device = ksdkProj.device
        self.parentProject = ksdkProj

        self.projRelPath = ''

        ## Determine if this is a USB or standard project
        self.projType = 'usb' if ksdkProj.useUSB else 'std'

        # Create local copies of the tag dictionaries
        if self.projType == 'std':
            self.cDefines = copy.deepcopy(CDEFINES)
            self.linkDefines = copy.deepcopy(LINKDEFINES)
        else:
            self.cDefines = copy.deepcopy(CDEFINES_USB)
            self.linkDefines = copy.deepcopy(LINKDEFINES_USB)
            #self.linkLibs = copy.deepcopy(LINKLIBS_USB)

        self.cIncludes = copy.deepcopy(CINCLUDES)
        self.linkOut = copy.deepcopy(LINKOUT)
        self.linkScf = copy.deepcopy(LINKSCF)
        self.asmDefines = copy.deepcopy(ASMDEFINES)
        self.asmIncludes = copy.deepcopy(ASMINCLUDES)
        
        #add board templates
        TEMPLATES[FILENAME] = [n for n in self.parentProject.parent.getBoardFilesList()]
        TEMPLATES[FILEPATH] = ['../' + n for n in TEMPLATES[FILENAME]]
        TEMPLATES[FILETYPE] = [('5' if n.endswith('.h') else '1') for n in TEMPLATES[FILENAME]]
        self.templates = TEMPLATES
            
        #add drivers
        excludedDriversDicts = self.parentProject.parent.getDriversExcludedFromBuild(device = ksdkProj.device[1])
        excludedDriversNameList = [d[ksdkObj.NAME_KEY] for d in excludedDriversDicts]
        allDriversListOfDicts = self.parentProject.parent.getBoardFilesForBoardProjects(False, True, boardName = self.parentProject.board[1], device = ksdkProj.device[1], rtosType = ksdkProj.rtos) + excludedDriversDicts
        DRIVERS[FILEPATH] = [d[ksdkObj.LOCATION_URI_KEY] for d in allDriversListOfDicts if (d[ksdkObj.LOCATION_URI_KEY].find(Constants.DRIVERS_FOLDER) != -1)]
        DRIVERS[FILENAME] = [d[ksdkObj.NAME_KEY] for d in allDriversListOfDicts if (d[ksdkObj.LOCATION_URI_KEY].find(Constants.DRIVERS_FOLDER) != -1)]
        DRIVERS[FILETYPE] = [('5' if n.endswith('.h') else '1') for n in DRIVERS[FILENAME]]
        DRIVERS[ksdkIarNew.EXCLUDED_LIST] = [n for n in DRIVERS[FILENAME] if n in excludedDriversNameList]
        self.drivers = DRIVERS
        
        #add utilities
        UTILITIES[FILEPATH] = [d[ksdkObj.LOCATION_URI_KEY] for d in allDriversListOfDicts if (d[ksdkObj.LOCATION_URI_KEY].find(Constants.UTILITIES_FOLDER) != -1)]
        UTILITIES[FILENAME] = [d[ksdkObj.NAME_KEY] for d in allDriversListOfDicts if (d[ksdkObj.LOCATION_URI_KEY].find(Constants.UTILITIES_FOLDER) != -1)]
        UTILITIES[FILETYPE] = [('5' if n.endswith('.h') else '1') for n in UTILITIES[FILENAME]]
        UTILITIES[ksdkIarNew.EXCLUDED_LIST] = [n for n in UTILITIES[FILENAME] if n in excludedDriversNameList]
        self.utilities = UTILITIES
        

        self.projStartup = copy.deepcopy(PROJ_STARTUP)
        
        PROJ_SOURCES = {'GroupName': 'sources','FileName': ['main.c'],'FileType': ['1'],'FilePath': ['../main.c']}

        if self.parentProject.isQuickGenerate:
            PROJ_SOURCES[FILENAME].append('main.h')
            PROJ_SOURCES[FILETYPE].append('5')
            PROJ_SOURCES[FILEPATH].append('../main.h')
        
        listOfCMSISDict = self.parentProject.parent.getCMSISFiles(ksdkProj.device[1])
        cmsisFileNames = [d[ksdkObj.NAME_KEY] for d in listOfCMSISDict]
        cmsisFileTypes = ["1" if f.endswith(".c") else "5" for f in cmsisFileNames]
        cmsisFilePaths = [d[ksdkObj.LOCATION_URI_KEY] for d in listOfCMSISDict]
        
        PROJ_CMSIS =\
        {'GroupName': 'CMSIS', 'FileName': cmsisFileNames, 'FileType': cmsisFileTypes, 'FilePath': cmsisFilePaths
        }
        
        self.projCMSISFiles = PROJ_CMSIS
        
        fileTypeList = []
        
        listOfDicts = []
        folderName = ''
        
        #FIXME Radka refactor
        
        self.archType = CortexType.getCortexType(self.device[4])
        toolType = ToolchainType.KeilMDK
        if ksdkProj.rtos != 'bm':
            if ksdkProj.rtos == 'freertos':
                listOfDicts = self.parentProject.parent.getMapOfFreertosPaths(self.archType, toolType, self.parentProject.board[1])
                folderName = ksdkKdsNew.FREERTOS_DIRECTORY_NAME
                for name in self.parentProject.parent.getRTOSTemplateFilesNames(RTOSType.FreeRTOS):
                    PROJ_SOURCES[FILENAME].append(name)
                    PROJ_SOURCES[FILETYPE].append('1' if name.endswith('.c') else '5')
                    PROJ_SOURCES[FILEPATH].append('../' + name)
            elif ksdkProj.rtos == 'ucosii':
                listOfDicts = self.parentProject.parent.getMapOfuCOSIIPaths(self.archType, toolType, self.parentProject.board[1])
                folderName = ksdkKdsNew.UCOSII_DIRECTORY_NAME
                for name in self.parentProject.parent.getRTOSTemplateFilesNames(RTOSType.uCOSII):
                    PROJ_SOURCES[FILENAME].append(name)
                    PROJ_SOURCES[FILETYPE].append('1' if name.endswith('.c') else '5')
                    PROJ_SOURCES[FILEPATH].append('../' + name)
            elif ksdkProj.rtos == 'ucosiii':
                listOfDicts = self.parentProject.parent.getMapOfuCOSIIIPaths(self.archType, toolType, self.parentProject.board[1])
                folderName = ksdkKdsNew.UCOSIII_DIRECTORY_NAME
                for name in self.parentProject.parent.getRTOSTemplateFilesNames(RTOSType.uCOSIII):
                    PROJ_SOURCES[FILENAME].append(name)
                    PROJ_SOURCES[FILETYPE].append('1' if name.endswith('.c') else '5')
                    PROJ_SOURCES[FILEPATH].append('../' + name)
                
        
        self.projSources = copy.deepcopy(PROJ_SOURCES)
        
        filePathList = [dictionary[ksdkObj.LOCATION_URI_KEY] for dictionary in listOfDicts]
        fileNameList = [dictionary[ksdkObj.NAME_KEY] for dictionary in listOfDicts]
        for dictionary in listOfDicts:
            if dictionary[ksdkObj.NAME_KEY].endswith('.c'):
                fileTypeList.append('1')
            elif dictionary[ksdkObj.NAME_KEY].endswith('.h'):
                fileTypeList.append('5')
            else:
                fileTypeList.append('2')
        
        self.projRtos = {'GroupName': folderName, 'FileName':fileNameList, 'FileType':fileTypeList, 'FilePath':filePathList }

        #self.wsProjects = copy.deepcopy(WKSPACE_PROJECTS)

        return