Development Board for Embedded Systems
Total Page:16
File Type:pdf, Size:1020Kb
PEPEonBOARD Development board for embedded systems Pedro Guilherme Antunes Diogo Thesis to obtain the Master of Science Degree in Electrical and Computer Engineering Examination Committee Chairperson: Prof. Nuno Cavaco Gomes Horta Supervisor: Prof. Rui Manuel Rodrigues Rocha Co-supervisor: Prof. Carlos Nuno da Cruz Ribeiro Member of the Committee: Prof. Nuno Filipe Valentim Roma April 2013 ii Dedicado em memoria´ do meu pai... iii iv Agradecimentos Em primeiro lugar gostaria agradecer aos meus orientadores de tese, Professor Rui Rocha, que durante um ano me acompanhou neste processo, pela imensa disponibilidade e pela capacidade de exigir o melhor de mim e das minhas decisoes.˜ Ao Professor Carlos Ribeiro pelo apoio prestado e porque sem ele nao˜ existiria simulador. Nao˜ posso deixar de agradecer ao Instituto Superior Tecnico,´ a todos os professores que me acom- panharam nestes quase 6 anos e ajudaram no meu desenvolvimento enquanto aluno. A todos os elementos do grupo GEMS, o meu obrigado pelas reunioes˜ de quarta-feira. Um especial agradecimento ao Professor Carlos Almeida, por me ter ensinado os fundamentos dos sistemas embebidos que tao˜ uteis´ me foram neste trabalho e pelas ideias nas reunioes˜ de quarta-feira. Ao Jose´ Catela pelas chatices que lhe causei e por todo o apoio no laboratorio´ e com o MoteIST. Ao Sr. Joao˜ Pina por toda a ajuda com os componentes e montagem da placa. Nao˜ seria justo referir nomes, mas a todos os amigos que fiz durante esta jornada, o meu grande obrigado. Vocesˆ fizeram com que fosse mais facil´ ultrapassar os momentos menos bons e tornaram os bons melhores ainda. Hei-de recordar com saudade as conversas nos cafezinhos´ depois de almoc¸o. Nao˜ seria justo nao˜ falar dos meus colegas e amigos do NEEC por me apoiarem e incentivarem a dar o meu melhor e a aumentar os meus conhecimentos enquanto ajudava outros, se voltasse atras´ repetiria todo tempo que passei convosco. A` minha mae,˜ por ser a melhor mae˜ do mundo, obrigado por todo o carinho e apoio que me deste durante todos estes anos, ajudaste a fazer de mim o homem que sou hoje. Aos meus irmaos˜ Tita e Andre´ por me chatearem constantemente, mas por fazerem de mim ao mesmo tempo melhor irmao˜ e pessoa. Por ultimo,´ mas nao˜ menos importante, um grande obrigado a` minha namorada Joana, por estares sempre aqui quando preciso, por todos os momentos maravilhosos e por seres o meu porto seguro, este trabalho tambem´ e´ teu. v vi Resumo PEPE e´ um processador de 16 bits, criado com o proposito´ de ensinar os conceitos basicos´ de Arqui- tectura de Computadores. Inicialmente este processador era simulado num ambiente de simulac¸ao˜ em computador - SIMAC. A principal desvantagem de correr um processador num ambiente simulado e´ nao˜ poder interagir com perifericos´ reais, o que limita as suas aplicac¸oes.˜ Como tal, os utilizadores estavam impossibilita- dos de correr os seus programas fora do ambiente de simulac¸ao. Motivado por estas limitac¸oes,˜ uma placa de desenvolvimento foi criada como plataforma para um emulador externo. Esta placa inclui muitos dos perifericos´ existentes no SIMAC, como um LCD, teclado hexadecimal, displays de 7 segmentos, botoes˜ e LEDs. Para emular o PEPE fora do ambiente de simulac¸ao˜ foi usado um microcontrolador. Este microcontrolador esta´ responsavel´ por executar os programas do PEPE, interagir com os perifericos´ e comunicar com o computador. Esta comunicac¸ao˜ permite que o computador controle o emulador. Com o objectivo de manter uma interface familiar, a mesma janela usada para simular programas no ambiente de simulac¸ao˜ e´ agora tambem´ usada para controlar o emulador. Este trabalho abre novas possibilidades para quem usa o PEPE, visto que permite controlar novos perifericos´ externos, assim como servir de alternativa a outras placas de desenvolvimento mais com- plexas. Palavras-chave: PEPE, Sistemas Embebidos, Unidade de Processamento, Emulac¸ao,˜ Sim- ulador em Computador, Desenho de Hardware vii viii Abstract PEPE is a 16 bit processor, created with the purpose of teaching the basics of Computer Architectures. This processor was initially simulated on a computer simulator - SIMAC. The main disadvantage of a simulated processor is not being able to interact with real peripherals, which limits its applications. Because of this, the users were unable to run their programs outside of the simulator environment. Motivated by these limitations, a hardware development board was purposefully built to serve as a platform for an external emulator. This platform integrates many of SIMAC’s existing peripherals such as an LCD, a keypad, seven segment displays, buttons and LEDs. To emulate the PEPE processor outside the computer, we used a microcontroller. The microcontroller is responsible for emulating PEPE programs, interfacing with the peripherals and communicating with the computer. This communication allows the emulator to be controlled by a computer. With the goal of maintaining a familiar user interface, the same simulator interface is used to control the emulator, while maintaining the option to run the same programs on the simulator. This work opens new possibilities for anyone using the PEPE processor, as it can now control new external peripherals, as well as provide an alternative to other more complex development boards. Keywords: PEPE, Embedded Systems, Processing Unit, Emulation, Computer Simulator, Hard- ware Design ix x Contents List of Tables.............................................. xv List of Figures............................................. xviii List of Abbreviations.......................................... xix 1 Introduction 1 1.1 Motivation.............................................1 1.2 Goals...............................................2 1.3 Contributions...........................................2 1.4 Organization...........................................3 2 Emulation Process Overview5 2.1 Comparing Different Emulation Approaches..........................6 2.1.1 Decode-and-Dispatch Interpretation..........................6 2.1.2 Threaded Interpretation.................................7 2.1.3 Threaded Interpretation with Precoding........................7 2.1.4 Binary Translation....................................8 2.2 Existing Work...........................................9 2.3 Discussion............................................9 3 Emulated PEPE Architecture 11 3.1 PEPE............................................... 12 3.2 Architecture............................................ 16 4 Designing PEPEonBOARD 19 4.1 Target Platform.......................................... 19 4.1.1 Starting the Microcontroller............................... 20 4.2 Storing a PEPE Program in the microcontroller........................ 21 4.3 Translating from PEPE’s Instruction Set to the MSP430 Instruction Set........... 22 4.4 Virtual Memory.......................................... 25 4.5 Running a program........................................ 27 4.6 Emulated Instructions Routines................................. 28 4.7 Reading and Writing from / to Memory............................. 30 xi 4.8 Interfacing with the Peripherals................................. 30 4.8.1 LEDs........................................... 30 4.8.2 Push Buttons and Toggle Switches........................... 30 4.8.3 Seven Segment Displays................................ 31 4.8.4 Keypad.......................................... 31 4.8.5 LCD............................................ 32 4.8.6 Serial Interface...................................... 33 4.9 Interrupts............................................. 35 4.9.1 Overflow......................................... 36 4.9.2 DIV0............................................ 36 4.9.3 INV OPCODE...................................... 37 4.9.4 MISALIGNED D..................................... 37 4.9.5 MISALIGNED I...................................... 37 4.9.6 External Interrupts.................................... 37 5 The PEPEonBOARD Platform 39 5.1 Requirements........................................... 39 5.2 Implementing PEPEonBOARD................................. 40 5.2.1 Power........................................... 40 5.2.2 Interfacing with the MoteIST++ s5 1011........................ 40 5.2.3 Serial Communication With a Computer........................ 44 5.2.4 Seven Segment Displays................................ 46 5.2.5 Speaker.......................................... 48 5.2.6 Push Buttons and Switches............................... 48 5.2.7 LEDs........................................... 48 5.2.8 Extending the Main Board with an LCD and Keypad Add-On Board......... 48 5.3 Second Version of the Main Board............................... 50 6 Interfacing with the Computer Simulator 53 6.1 Software Changes to the SIMAC................................ 53 6.2 Communication with the Jalapeno˜ ............................... 54 6.2.1 Download COD...................................... 59 6.2.2 Upload COD....................................... 59 6.2.3 Erase COD........................................ 60 6.2.4 Version.......................................... 60 6.2.5 Run Emulator....................................... 61 6.2.6 Pause Emulator..................................... 61 6.2.7 Step Emulator...................................... 61 6.2.8 Add Breakpoint...................................... 62 6.2.9 Remove Breakpoint................................... 62 xii 6.3 Breakpoints............................................ 63 6.3.1 Stepping........................................