• No results found

Målgruppen för examensarbetet är i första hand uppdragsgivaren vilket för-anledde krav på vilken hårdvara slutprodukten behövde vara kompatibel med. Som följd saknar slutprodukten stöd för mikrokontroller eller CAN-moduler av andra modeller. Dock krävs inga omfattande modifieringar för att

38 | Analys och diskussion

mjukvaran ska fungera med liknande komponenter vilket i kombination med Arduino stora marknadsandel bland lekmän skapar nytta för många.

Med tanke på att arbetet enbart skapat mjukvara som används istället för redan existerande mjukvara, påverkas inte miljön någonting av implementationen av slutprodukten. Vi har inte fokuserat på att minimera strömförbrukningen eftersom en mjukvaruuppdatering kräver att mikrokontrollern är aktiv hela tiden. Den del av arbetet som kan optimeras gällande strömförbrukning är i uppstartsfasen när mikrokontrollern varit strömlös. Vår implementation avvaktar i två sekunder innan applikationen startar, vilket orsakar onödig strömförbrukning. En effektivare lösning hade varit en kortare uppstartstid, där uppkopplingsfasen mellan mikrokontroller och uppdateringsverktyg är bättre synkroniserad.

Ur ett etisk perspektiv ökar risken för olovlig manipulation av en mikro-kontrollers mjukvara eftersom det inte krävs direkt fysisk tillgång via CAN. För att manipulera mjukvaran krävs det kännedom om vilka NOD-ID som används, vilket försvårar för obehöriga. Möjligheten har även lämnats öppen för implementation av lösenord iPA, se bilagaA.1.

Slutsatser | 39

Kapitel 6

Slutsatser

Examensarbetet resulterade i en fungerade metod för att genomföra mjukvaru-uppdateringar av en specifik nod i ett CAN-nätverk. Det har visats att J1939 som kommunikationsprotokoll är lämpligt för mjukvaruuppdateringsproces-sens olika faser vilket möjliggör migrering till ett nätverk där övrig kom-munikation använder J1939. Slutprodukten bestod dels av en bootloader som utöver sitt ursprungliga stöd för uppdatering via USB även har stöd för att ta emot uppdateringsdata via CAN och skriva den till minnet. Ett uppdateringsverktyg som utvecklats i Python och använder Intel HEX-filer som källa till uppdateringen och använder J1939 adressering för att välja vilken nod i nätverket som ska uppdateras. För att garantera dataintegriteten av mjukvaruuppdateringen beräknades en kontrollsumma med CRC32 för det som skrivits till programminnet.

Mikrokontrollern ATmega328p är väletablerad mycket tack vare Arduino och används av lekmän i en mängd olika projekt. Tidigare anpassningar av bootloadern för ATmega328p har gjorts, men inte specifikt för CAN-protokollet då det främst används inom fordonsindustrin och dessa lösningar generellt inte delas med allmänheten. Resultatet av det här arbetet kan därför komma till användning för personer som, precis som uppdragsgivaren, har ett fordon där ett eget anpassat sensorsystem ska implementeras.

Förbättringar för slutprodukten kan innefatta optimering av programmerings-kod för att minska bootloaderstorleken, minska uppdateringstiden genom att öka hur mycket uppdateringsdata som kan sändas per bekräftelse och nya funktioner för att till exempel kontrollera mikrokontrollerns version på mjukvaran.

REFERENSER | 41

Referenser

[1] Bootloader Design for Microcontrollers in Embedded Systems. Jacob Beningo; 2015 [updated 2015 Jun 26; cited 2020 Apr 12]. Availab-le from:https://github.com/Optiboot/optiboot/blob/ master/optiboot/bootloaders/optiboot/optiboot.c. [2] Selokar PR, Karule DPT, editors. Firmware Upgradation of ARM7

through Communication Link. Department of Electronics and Commu-nication, Shri Ramdeobaba College of Engineering and Management, Department of Electronics Engineering, Yashwantrao Chavan College of Engineering; 2016.

[3] TJA1050 High speed CAN transceiver. Revision 4. Philips Semi-conductors; 2003.

[4] Stand-Alone CAN Controller with SPI Interface. Revision J. Microchip Technology Inc; 2019.

[5] SocketCAN - Controller Area Network [homepage on the Internet]. San Francisco, CA: Linux Kernel Organization, Inc.; 1993 - [updated 2020 Jan 19; cited 2020 Jan 10]. Available from:https://www.kernel. org/doc/html/latest/networking/can.html.

[6] Surface vehicle recommended practice, J1939-21. DEC2010. SAE Inter-national; 1994.

[7] Atmel 8 bit Microcontroller with 4/8/16/32 kB In-System Programmable Flash. Revision. 8025I. ATmel; 2009.

[8] Bootloader Support Utilities; 2010 [updated 2010 Jan 6; cited 2020 Apr 25]. Available from: https://www.eit.lth.se/fileadmin/ eit/courses/edi021/avr-libc-user-manual/group_ _avr__boot.html.

42 | REFERENSER

[9] Optiboot. Bill Westfield; 2020 [updated 2020 Mar 15; cited 2020 May 11]. Available from: https://github.com/Optiboot/ optiboot.

[10] Atmega bootloader programmer. Nick Gammon; 2014 [updated 2014 Nov 26; cited 2020 May 17]. Available from:http://www.gammon. com.au/bootloader.

[11] Optiboot.c. Bill Westfield; 2020 [updated 2020 Mar 15; cited 2020 May 11]. Available from: https://github.com/Optiboot/ optiboot/blob/master/optiboot/bootloaders/

optiboot/optiboot.c.

[12] Vägfordon– Diagnostikkommunikation över CAN (DoCAN)– Del 2: Transportprotokoll och tjänster för nätverksskikt. SS-ISO 15765-2:2016. Swedish Standards Institute; 2016.

[13] Python library for Intel HEX files manipulations. Beaverton, OR 97008, USA: Python Packaging Authority; 2013 - [updated 2018 Jan 30; cited 2020 Maj 10]. Available from: https://pypi.org/project/ IntelHex/.

[14] Python Finite State Machines made easy.. Beaverton, OR 97008, USA: Python Packaging Authority; 2017 - [updated 2020 Jan 30; cited 2020 Maj 10]. Available from: https://pypi.org/project/ python-statemachine/.

[15] Forouzan. In: Data Communications and Networking. 5th ed. McGraw-Hill education; 2012. p. 270 – 273.

[16] zlib — Compression compatible with gzip; [updated 2020 Jun 5; cited 2020 Jun 6]. Available from: https://docs.python.org/3/ library/zlib.html.

Appendix A: SAE J1939 | 43

Bilaga A

SAE J1939

A.1 Proprietary A

Används till att byta fas i uppdateringsprocessing av en applikation. Innehåller även information nödvändiga för att genomföra en uppdatering. Kräver en ACK eller NACK som svar.

Data length: 8 bytes Extended data page: 0

Data page: 0

PDU format: 239

PDU specific: Destinationsadress Default priority: 6

Parameter Group Number: 61184 (00EF0016)

Data fält för parametrar som används i detta meddelande: Kontroll byte: 0 till 3 Se definition längre ner.

4 till 255 Används inte.

Applikationens ID: 0 till 255 Valbart för användaren att definiera. Appikationens version: 0 till 65535 Valbart för användaren att definiera.

44 | Appendix A: SAE J1939

Initieringsfas: Kontroll byte = 0

Byte: 1 Kontroll byte = 0, Initieringsfasen av uppdateringen. 2-8 Lösenord för att utföra reset annars fylld med FF16. Överföringsfas: Kontroll byte = 1

Byte: 1 Kontroll byte = 1, Överföringsfasen av uppdateringen. 2-3 Storlek på uppdateringen i antal bytes.

4 Antal pages som uppdateringen är uppdelad i. 5-8 Reserverade.

Verifieringsfas: Kontroll byte = 2

Byte: 1 Kontroll byte = 2, Verifieringsfasen av uppdateringen. 2-5 Beräknad CRC32 av uppdateringens data.

6-8 Reserverade. Avslutningsfas: Kontroll byte = 3

Byte: 1 Kontroll byte = 3, Avslutningsfas av uppdateringen. 2-8 Reserverade.

Related documents