{"push_id":1387266146,"size":1000,"distinct_size":1111,"ref":"refs/heads/pr-rpl","head":"1bdec853e15ba5b94924f4f0eabf9eae7b5f7780","before":"056acd8fc0f676d2eb254b4395dbff5f095f53d8","commits":[{"sha":"c9897fe9b0f515b570237d790c0c2562f8eae5e2","author":{"name":"Jesus Sanchez-Palencia","email":"8ac227382798d3e6dc0cc18c56eb4d3ee80e90f6@intel.com"},"message":"galileo: Add BSP files\n\nThis patch creates the platform/galileo/bsp directory. This directory\ncontain all files related to Galileo's Board Support Package (BSP). For\nnow, the BSP consists of libc and bootloader.\n\nWithin the BSP directory, we have the scripts build_newlib.sh and build_\ngrub.sh. These scripts provide an easy and quick way to build the newlib\nand the grub for the Galileo platform.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/c9897fe9b0f515b570237d790c0c2562f8eae5e2"},{"sha":"f14f9aba4109c6693ce1db0b87c73e5d2cb03f08","author":{"name":"Jesus Sanchez-Palencia","email":"8ac227382798d3e6dc0cc18c56eb4d3ee80e90f6@intel.com"},"message":"galileo: Initial support for Intel Galileo Platform\n\nThis patch adds the initial support for Intel Galileo Platform. It\ncontains the minimum set of code required to boot a dummy Contiki\nimage.\n\nFor Galileo initial support, we implemented a linker script, a minimal\nbootstrap code, a set of stubbed functions required by newlib, and a\nvery simple main() function. Moreover, we also define some header files\nand macros required by Contiki.\n\nTo build applications for this platform you should first build newlib\n(in case it wasn't already built). To build newlib you can run the\nfollowing command:\n$ platform/galileo/bsp/libc/build_newlib.sh\n\nOnce newlib is built, you can build applications. To build applications\nfor Galileo platform you should set TARGET variable to 'galileo'. For\ninstance, building the hello-world application should look like this:\n$ cd examples/hello-world/ && make TARGET=galileo\n\nThis will generate the 'hello-world.galileo' file which is a multiboot-\ncompliant [1] ELF image. This image can be booted by any multiboot-\ncomplaint bootloader such as Grub.\n\nFinally, this patch should be used as a guideline to add the initial\nsupport for others platforms based on x86 SoCs.\n\n[1] https://www.gnu.org/software/grub/manual/multiboot/multiboot.html","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/f14f9aba4109c6693ce1db0b87c73e5d2cb03f08"},{"sha":"1fb780011036db1fd48c1f97bc524ca3e0f354f7","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"galileo: Add 'debug' rule\n\nThis patch the 'debug' rule to simplify the debugging process. This new\nrule runs OpenOCD and gdb with the right parameters. OpenOCD runs in\nbackground and its output will be redirected to a log file in the\napplication's path called LOG_OPENOCD. Once gdb client is detached,\nOpenOCD is terminated.\n\nThe 'debug' rule is defined in Makefile.customrules-galileo file (create\nby this patch) which is included by the Contiki's buildsystem. So to\ndebug a Contiki application for Galileo board, run the following command:\n$ make TARGET=galileo debug\n\nIf you use a gdb front-end, you can define the \"GDB\" environment variable\nand your gdb front-end will be used instead of default gdb. For instance,\nif you want to use cgdb front-end, just run the command:\n$ make BOARD=galileo debug GDB=cgdb","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/1fb780011036db1fd48c1f97bc524ca3e0f354f7"},{"sha":"e820a8b03b13a4d18379ea42b167ec608180cfc9","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"galileo: Add README file\n\nThis patch adds a README file which contains general information about\nthe Intel Galileo board support. The file provides information about\nsupported features as well as instructions on how to build, run and debug\napplications for this platform.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/e820a8b03b13a4d18379ea42b167ec608180cfc9"},{"sha":"7e13081776db8341b5f9793f6bd529410c75ec91","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"galileo: Print elf sections sizes after build\n\nThis patch changes Galileo's buildsystem to print the elf sections\nsizes after a new image is built. This way we can easily track how\nthese sections increase or decrease after any change.\n\nTo achieve that, we define a custom linking rule which is pretty much\nthe same as the default linking rule define in Makefile.include, but\nwe run 'size' command after the image is built.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/7e13081776db8341b5f9793f6bd529410c75ec91"},{"sha":"766d3aa8209310ad9790b5e8652f1bf35f9e1f4b","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"gitignore: Add Vim swap files","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/766d3aa8209310ad9790b5e8652f1bf35f9e1f4b"},{"sha":"7a1898f73e20db5c72dc847a45103593a68f84ad","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"galileo: Halt if main() returns\n\nThis patch adds extra intrunctions to loader.S so we halt if main()\nreturns.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/7a1898f73e20db5c72dc847a45103593a68f84ad"},{"sha":"595088be0928a7b4b9e3603497c1b5fdc8ca52af","author":{"name":"Jesus Sanchez-Palencia","email":"8ac227382798d3e6dc0cc18c56eb4d3ee80e90f6@intel.com"},"message":"galileo: Add a bootstrap stack for C runtime\n\nAll we need to provide to C at this point is a region in memory dedicated to\nits stack. This is done by allocating a region in .bss and pushing its start\naddress to esp. Since the multiboot spec says it is not safe to rely on the\ninitial stack provided by the bootloader, this patch provides our own stack.\n\nGalileo boards have 512Kb of SRAM and 256Mb of DDR3 RAM, so providing 8kb as\na start seems safe. Moreover, stack sizes are very application-oriented\nso it may be too early to provide a bigger (or smaller) stack.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/595088be0928a7b4b9e3603497c1b5fdc8ca52af"},{"sha":"6ecc4a7371351d5cc84be0ade5141186d7638a13","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"galileo: Implement main() function\n\nThis patch implements the main() function for Galileo platform. At this\nmoment, only Processes subsystem is enabled. After this patch we are\nable to some rudimentary debugging to ensure that process thread from\napplications are being indeed executed.\n\nOnce we properly support more Contiki subsystems, such as clock, ctimer,\netimer, and rtimer, we will add them to Galileo platform's main() as well.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/6ecc4a7371351d5cc84be0ade5141186d7638a13"},{"sha":"41bca35c1e5bc493b96ee50810eaadba40326fb6","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"x86: Initialize Global Descriptor Table\n\nThis patch adds code to initialize the Global Descriptor Table. For\nsimplicity, the memory is organized following the flat model. Thus,\nmemory appears to Contiki as a single, continuous address space. Code,\ndata, and stack are all contained in this address space (so called\nlinear address space).\n\nThe macros to manipulate bits from segment descriptor and the\nset_descriptor() helper are based on the ones described in [1].\n\n[1] http://wiki.osdev.org/GDT_Tutorial","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/41bca35c1e5bc493b96ee50810eaadba40326fb6"},{"sha":"b8feaea30d1da2afe5c752eeafa2c3690bac3853","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"x86: Add helpers.h\n\nThis patch adds the helpers.h. This file should contain only x86-related\nhelper functions and macros. For now, we define the BIT macro and halt()\nhelpers which will be used in upcoming patches.\n\nAdditionally, this patch also changes loader.S to call the halt().","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/b8feaea30d1da2afe5c752eeafa2c3690bac3853"},{"sha":"13d92cf67aa55fc5d4f4991e69a6c9ebb2cc8819","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"x86: Initialize Interrupt Descriptor Table\n\nThis patch adds code to handle Interrupt Descriptor Table (IDT)\ninitialization. The IDT is initialized with null descriptors\ntherefore any interrupt at this point will cause a triple fault.\nThe IDT initialization is part of x86 CPU initialization.\n\nStrictly speaking, there is no need to use attribute packed in struct\nintr_gate_desc however we use it for readability reasons.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/13d92cf67aa55fc5d4f4991e69a6c9ebb2cc8819"},{"sha":"f6644d9208ee953c1781f61dc56443d3a7d8992d","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"x86: CPU Initialization\n\nThis patch defines the cpu_init() function which should encapsulate\nall code related to x86 CPU initialization. For now, this function\ninitializes GDT and IDT.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/f6644d9208ee953c1781f61dc56443d3a7d8992d"},{"sha":"e28f400e0c0e15a2e9e7263152f95b9f3d6e6117","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"x86: Introduce interrupt.h\n\nThis patch introduces the interrupt.h header file which provides some\nhelper macros to set a interrupt handler and disable/enable maskable\nhardware interrupts.\n\nSince there is no easy way to write an Interrupt Service Routines\n(ISR) in C (for further information on this, see [1]), we introduce\nthe SET_INTERRUPT_HANDLER helper macro.\n\nThe macro does two things:\n1) Defines an assembly trampolin to a C function that will, indeed,\n   handle the interrupt.\n2) Sets the corresponding interrupt gate descriptor in IDT.\n\nThe macro usage is pretty straightforward. The macro is defined as\nSET_INTERRUPT_HANDLER(num, has_error_code, handler) where:\n@num:             Interrupt number (0-255)\n@has_error_code:  0 if processor doesn't push error code onto the\n                  stack. Otherwise, set this argument to 1.\n@handler:         Pointer to function that should be called once the\n                  interrupt is raised. In case has_error_code == 0\n                  the function prototype should be the following:\n                  void handler(void)\n                  Otherwise, it should be:\n                  void handler(struct interrupt_context context)\n\nFor instance, let's say we want to set a handler for a device interrupt\n(for example, interrupt number 101). Remember, hardware interrupts don't\nhave error code. So we should have something like this:\n\nvoid interrupt_handler(void)\n{\n        /* Handling code here */\n}\n\nvoid my_device_init(void)\n{\n        ...\n\n        SET_INTERRUPT_HANDLER(101, 0, interrupt_handler);\n\n        ...\n}\n\nNow, let's say we want to set an interrupt handler for Page Fault\n(interrupt number 14). Some exceptions, such as Page Fault, pushes an\nerror code onto the stack and may require registers values in order\nto be properly be handled. Thus, the code should look like this:\n\nvoid pagefault_handler(struct interrupt_context context)\n{\n        /* Handling code here */\n}\n\nvoid init_memory(void)\n{\n        ...\n\n        SET_INTERRUPT_HANDLER(14, 1, pagefault_handler);\n\n        ...\n}\n\nFor further information about exceptions and error code, refer to Intel\nCombined Manual, Vol. 3, Sections 6.3 and 6.13.\n\nFinally, we don't define any API to unregister interrupt handlers since\nwe believe that it wouldn't be useful at all, at least at this moment.\nConsidering Contiki's context, interrupt handler registration is pretty\n\"static\" and defined at compile-time by platform code (or the device\ndrivers used by the platform).\n\n[1] http://wiki.osdev.org/Interrupt_Service_Routines","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/e28f400e0c0e15a2e9e7263152f95b9f3d6e6117"},{"sha":"604538ed62cb688d88c4b3f6a9fad72b1e0eb32e","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"x86: Set interrupt handler for Double Fault exception\n\nThis patch sets an interrupt handler for Double Fault exception during\nCPU initialization. In case such exception is raised, we halt the system.\nThis way, we avoid the system to triple fault (due to an unhandled\ninterrupt for instance), leaving no trace about what cause the triple\nfault.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/604538ed62cb688d88c4b3f6a9fad72b1e0eb32e"},{"sha":"11098501d83d75613df7678e4650011eccd54ae8","author":{"name":"Jesus Sanchez-Palencia","email":"8ac227382798d3e6dc0cc18c56eb4d3ee80e90f6@intel.com"},"message":"x86: Initialize the 8259 PIC\n\nThe Programmable Interrupt Controller is a chip responsible for\ntranslating hardware interrupts to system interrupts. When it\nreceives an Interrupt Request (IRQ), it triggers the appropriate\ninterrupt line reaching the appropriate IDT gate, following a\npreviously setup offset.\n\nThere are 2 daisy-chained PICs. PIC1 handles IRQs 0-7 and PIC2\nhandles IRQs 8-15. If no vector offset is set, an IRQ0, for instance,\nwould trigger the interrupt 0, clashing with the \"Division by zero exception\"\nhandler. Thus the IRQs must be remapped.\n\nThis patch implements the PICs initialization through their 4\nInitialization Command Words (ICWs) in a very \"canonical\" way:\n- ICW1: the initializing command;\n- ICW2: the vector offset for the PIC1 and PIC2 (we add an offset of 32 positions);\n- ICW3: the inter-PICs wiring setup (we connect PIC2 to PIC1's IRQ2);\n- ICW4: extra systems information (we set PIC1 as Master and PIC2 as slave).\n\nIt then masks the Interrupt Mask Register, blocking all IRQs but #2 initially.\nThese must be unmasked on demand. The IMR is 8-bits long, so setting the n^th bit to 1\nwould DISABLE the IRQ n while setting it to 0 would ENABLE IRQ n.\n\nAs stated, this is an implementation of the legacy 8259 PIC. More\ninvestigation is needed so we decide if it is enough or if we need\nthe (newer) APIC implementation instead.\n\nThis patch also adds the outb() helper function to helpers.h. The helpers\nis a wrapper for assembly 'out' instruction.\n\nFinally, since we now properly support hardware interrupts, this patch\nalso enables IRQs in platform main().\n\nMore information:\n- Quark X1000 Datasheet, section 21.12, page 898.\n- http://wiki.osdev.org/8259_PIC\n- http://stanislavs.org/helppc/8259.html","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/11098501d83d75613df7678e4650011eccd54ae8"},{"sha":"5f47bafc6a2925d58b71ebc234398e9eb6b91eb9","author":{"name":"Andre Guedes","email":"8f9fbd25e63f46e2c21ffe8e663610a96ef3c7b0@intel.com"},"message":"x86: Add Real-Time Clock Driver\n\nThis patch adds a driver for Real-Time Clock (RTC). The RTC timer is\nsuitable to implement some operating system features such as the\nsystem clock. Actually, the RTC will be used to implement the system\nclock in galileo platform.\n\nThe driver introduced by this patch programs the RTC to generate\ninterrupt periodically. The interrupt frequency can be configured by the\nuser. On each RTC interrupt, a callback configured by the user is called.\nAs expected, that callback is executed in interrupt context so the user\nshould be aware of what it is not supposed to do (e.g. to call blocking\nfunctions).\n\nThis patch also adds the inb() helper function to helpers.h. The helpers\nis a wrapper for assembly 'in' instruction.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/5f47bafc6a2925d58b71ebc234398e9eb6b91eb9"},{"sha":"eafcba5e7a027629ec941b9ec97e2a117b8ad09f","author":{"name":"Jesus Sanchez-Palencia","email":"8ac227382798d3e6dc0cc18c56eb4d3ee80e90f6@intel.com"},"message":"galileo: Add support for Clock module\n\nThis patch adds support for Contiki's clock module. All functions from\ncore/sys/clock.h are implemented, except clock_set_seconds() and clock_\ndelay_usec(). The CLOCK_CONF_SECOND macro is set to 128. This value\nseems to be good enough since several platforms used it. Finally, we\nuse the RTC driver to track the number of ticks from the system clock.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/eafcba5e7a027629ec941b9ec97e2a117b8ad09f"},{"sha":"7c871871deedc555d41cbaff5adbbc39a18aee2f","author":{"name":"Jesus Sanchez-Palencia","email":"8ac227382798d3e6dc0cc18c56eb4d3ee80e90f6@intel.com"},"message":"galileo: Add support for Etimer and Ctimer libraries\n\nThis patch adds support for the Etimer and Ctimer libraries. To support\nthe Etimer library, we should poll the etimer process every time the\nsystem clock is updated. To do this more efficiently, by taking advantage\nof etimer_next_expiration_time() API, we poll the etimer process only\nwhen an 'Event Timer' has expired.\n\nWe don't need any platform specific support in order to enable the Ctimer\nlibrary since it relies completely on Etimer.\n\nThe others timer libraries (Timer and Stime) don't required any specific\nplatform support as well since they rely on the system Clock module only.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/7c871871deedc555d41cbaff5adbbc39a18aee2f"},{"sha":"d70f67cd604decc704b6e85a71b26a340f69ddd5","author":{"name":"Jesus Sanchez-Palencia","email":"8ac227382798d3e6dc0cc18c56eb4d3ee80e90f6@intel.com"},"message":"galileo: Add PIT driver\n\nThis patch adds a driver for the 8254 Programmable Interrupt Timer (PIT).\nThe driver introduced by this patch programs the PIT to generate interrupt\nperiodically. The interrupt frequency can be configured by the user.\n\nOn each PIT interrupt, a callback configured by the user is called. As\nexpected, that callback is executed in interrupt context so the user\nshould be aware of what it is not supposed to do (e.g. to call blocking\nfunctions).\n\nIssues marked as FIXME are all related to missing APIs on the PIC driver\nso they will be addressed by a future commit.","distinct":true,"url":"https://api.github.com/repos/drugo72/contiki/commits/d70f67cd604decc704b6e85a71b26a340f69ddd5"}]}
{"actor":{"display_login":"drugo72"}}