-
Notifications
You must be signed in to change notification settings - Fork 2
/
readme.txt
1012 lines (971 loc) · 55.6 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
*****************************************************************************
*** Files Organization ***
*****************************************************************************
--{root} - ChibiOS/RT directory.
+--readme.txt - This file.
+--documentation.html - Shortcut to the web documentation page.
+--todo.txt - Current plan (development/unstable versions only).
+--license.txt - GPL license text.
+--exception.txt - GPL exception text (stable releases only).
+--boards/ - Board support files.
+--demos/ - Demo projects.
+--docs/ - Documentation.
| +--html/ - Local HTML documentation (after rebuild).
| +--reports/ - Test reports.
| +--src/ - Documentation source files (required for rebuild).
| +--rsc/ - Documentation resource files (required for rebuild).
| +--Doxyfile - Doxygen project file (required for rebuild).
| +--index.html - Local documentation access (after rebuild).
+--ext/ - External libraries, not part of ChibiOS/RT.
+--os/ - ChibiOS/RT files.
| +--hal/ - Hardware Abstraction Layer.
| | +--include/ - HAL high level headers.
| | +--src/ - HAL high level source.
| | +--platforms/ - HAL low level drivers implementations.
| | | +--AT91SAM7/ - Drivers for AT91SAM7 platform.
| | | +--AVR/ - Drivers for AVR platform.
| | | +--LPC11xx/ - Drivers for LPC11xx platform.
| | | +--LPC13xx/ - Drivers for LPC13xx platform.
| | | +--LPC214x/ - Drivers for LPC214x platform.
| | | +--MSP430/ - Drivers for MSP430 platform.
| | | +--SPC56x/ - Drivers for SPC56x/MPC563xx platforms.
| | | +--STM32/ - Drivers for STM32 platform (common).
| | | +--STM32F1xx/- Drivers for STM32F1xx platform.
| | | +--STM32F2xx/- Drivers for STM32F2xx platform.
| | | +--STM32F4xx/- Drivers for STM32F4xx platform.
| | | +--STM32L1xx/- Drivers for STM32L1xx platform.
| | | +--Posix/ - Drivers for x86 Linux/OSX simulator platform.
| | | +--Win32/ - Drivers for x86 Win32 simulator platform.
| | +--templates/ - Driver template files.
| | +--meta/ - Driver meta templates.
| +--ports/ - Port files for the various architectures.
| | +--GCC/ - Ports for the GCC compiler.
| | | +--ARM/ - Port files for ARM7 and ARM9 architectures.
| | | +--ARMCMx/ - Port files for ARMCMx architectures (ARMv6/7-M).
| | | +--PPC/ - Port files for PowerPC architecture.
| | | +--AVR/ - Port files for AVR architecture.
| | | +--MSP430/ - Port files for MSP430 architecture.
| | | +--SIMIA32/ - Port files for SIMIA32 simulator architecture.
| | +--IAR/ - Ports for the IAR compiler.
| | | +--ARMCMx/ - Port files for ARMCMx architectures (ARMv6/7-M).
| | +--RVCT/ - Ports for the Keil RVCT compiler.
| | | +--ARMCMx/ - Port files for ARMCMx architectures (ARMv6/7-M).
| +--kernel/ - Kernel portable files.
| | +--include/ - Kernel headers.
| | +--src/ - Kernel source.
| | +--templates/ - Kernel port template files.
| +--various/ - Various portable support files.
+--test/ - Kernel test suite source code.
| +--coverage/ - Code coverage project.
+--testhal/ - HAL integration test demos.
| +--LPC11xx/ - LPC11xx HAL demos.
| +--LPC13xx/ - LPC11xx HAL demos.
| +--STM32F1xx/ - STM32F1xx HAL demos.
| +--STM32F4xx/ - STM32F4xx HAL demos (valid for STM32F2xx too).
| +--STM32L1xx/ - STM32L1xx HAL demos.
+--tools - Various tools.
+--eclipse - Eclipse enhancements.
*****************************************************************************
*** Releases ***
*****************************************************************************
*** 2.6.0 ***
- FIX: Fixed MS2ST() and US2ST() macros error (bug #415).
- NEW: Added new pwmIsChannelEnabledI() API to the PWM driver, implemented
in the STM32 driver.
- NEW: Added support for timers 6, 7, 9, 11, 12, 14 to the STM32 GPT driver.
- NEW: Added support for timer 9 to the STM32 PWM and ICU drivers.
- NEW: Relicensed parts of the distribution tree under the Apache 2.0
license in order to make specific parts of the code more accessible
to the open source community and adopters.
- NEW: Added ADC(EQADC), HAL, ICU, PAL, PWM, Serial drivers for SPC5xx
platforms, tests to be added on the various sub-families.
- NEW: Added support for SPC56ELxx, SPC560BCxx, SPC560Pxx, SPC560Mxx and
SPC564Axx platforms.
- NEW: Now the general documentation includes data extracted from the low
level driver templates. Per-platform/architecture documents are no more
required and will be replaced with technical articles and examples for
each specific driver.
- NEW: Added a build test project for low level device driver templates.
- NEW: Enhanced CAN driver model, support for mailboxes has been added. STM32
driver implementation upgraded.
- NEW: Added ADC and PWM drivers for the AT91SAM7 platform, both donated
by Andrew Hannam.
- NEW: Added kernel support for the SAM4L, an Atmel Studio 6 demo for the
SAM4L-EK board has been added.
- NEW: CAN2 support for STM32 added.
- NEW: Updated STM32L1xx header to the latest version.
- NEW: Added an option to lwipthread to change the link status poll interval.
- NEW: Added new C++ demo for the STM32F4-Discovery.
- NEW: Updated C++ wrapper with a much more logical classes structure.
- NEW: ADC driver implementation for the STM32F3xx, the driver supports also
the dual-ADC mode allowing for a very high combined bandwidth.
- NEW: Added zero-copy capability to the STM32 MAC driver (experimental and
not tested yet).
- NEW: Added an optional zero-copy mode API to the MAC driver model.
- NEW: Added EXT driver to the STM32F3xx platform.
- NEW: Improved the STM32 EXT driver to support more than 32 channels.
- NEW: Added support for Olimex board STM32-LCD.
- NEW: Support for STM32F30x and STM32F37x.
- NEW: AT91SAM7A3 support.
- NEW: Unified the STM32F4xx and STM32F2xx platform code. The STM32F2xx now is
only supported as an STM32F4xx variant and not tested separately.
- NEW: Updated STM32F1, F2, F4, L1 ADC drivers to allow HW triggering.
- NEW: Added a new option STM32_ETH1_CHANGE_PHY_STATE to the STM32 MAC driver,
this change is connected to bug 3570335.
- NEW: Modified the CAN drivers to use the new event flags mechanism, the
previous flags handling has been removed.
- NEW: Modified serial and serial_usb drivers to use the new event flags
mechanism, the previous flags handling in BaseAsynchronousChannel has
been removed.
- NEW: Improved the kernel events subsystem, now event sources can associate
source-specific flags to the listener, the flags can then be retrieved
using the new APIs chEvtGetAndClearFlags() and chEvtGetAndClearFlagsI().
Some old APIs have been renamed to increase consistency of the module.
- NEW: Added VLE support to the Power Architecture GCC port.
- NEW: Reorganized the Power Architecture GCC port along the lines of the
ARMCMx port, now it can support multiple core types.
- NEW: Updated the Power Architecture rules.mk file to put object and listing
files into a ./build directory like ARM ports already do.
- NEW: Added Eclipse project files to most demos. The project are setup to
have paths relative to a variable named CHIBIOS that must point to the
ChibiOS/RT installation path. The variable must be defined under
Window->Preferences->General->Workspace->Linked_Resources and must contain
a path without the trailing slash character.
- NEW: Added memory signature record to the registry in order to simplify
the implementation of ad-hoc debuggers.
- NEW: Small andjustment in chcore.h files under ./os/ports/GCC required by a
difference in GCC 4.7.x.
- NEW: Added another STM32F4-Discovery demo using the on-board MEMS, SPI
and PWM. Removed MEMS handling from the old demo because code size limits
on non-free compilers.
- NEW: Added USART6 support to the STM32 UARTv1 driver, contributed by Erik
van der Zalm.
- NEW: Added demo for Arduino Mega, contributed by Fabio Utzig.
- NEW: Added support for ATmega1280, contributed by Fabio Utzig.
- NEW: Added I2C driver for AVR, contributed by Fabio Utzig.
- NEW: Added FatFs demo for the Olimex STM32-P107 board.
- NEW: Added support for the Olimex STM32-E407 board. Added an integrated
demo including USB-CDC, lwIP with web server, FatFs and shell, all running
together.
- NEW: Added an experimental and unsupported STM8 port for the IAR compiler,
contributed by "king2".
- NEW: Reorganized the STM32 EXT driver to have a sub-platform specific
part containing all the ISR related code, this has been necessary because
the significant differences among the various sub-families.
- NEW: Validated CAN driver on STM32F2/F4 (backported to 2.4.2).
- NEW: USB implementation for STM32F105/F107/2xx/F4xx devices.
- NEW: Improved SerialUSB driver using the new queued mode, much smaller
than the previous driver.
- NEW: Improved USB driver model supporting also queues for endpoint I/O,
packet mode removed.
- NEW: Added an application-defined field to I/O queues (a void pointer).
- NEW: Added board files for Maple Mini STM32F103, contributed by Wagner
Sartori Junior.
- NEW: Added SSP1 capability to the LPC13xx SPI driver.
- NEW: Updated vendor headers for LPC11xx and LPC13xx, the new headers
support several new devices.
- NEW: Demo for STM32F0-Discovery board.
- NEW: Initial support for STM32F0xx devices, added a specific ADC driver.
Validated EXT, GPT, ICU, PAL, PWM, Serial, SPI, UART drivers.
- NEW: Added a common ancestor class to the SDC and MMC_SPI drivers. This
allows to share code and definitions.
- NEW: Modified the SDC driver to implement the new block devices abstract
interface.
- NEW: Added two new functions to the MMC_SPI driver: mmcSync() and
mmcGetInfo(). Also implemented the new block devices abstract
interface. Moved the configuration parameters from mmcObjectInit() to
the configuration structure saving some RAM space. Updated demos.
- NEW: Added an abstract interface for block devices in the HAL. This
abstraction layer is meant to unify the access protocol to the SDC and
MMC_SPI (and potentially others) device drivers.
- NEW: Added an abstract interface for serial devices in the HAL. This
interface is meant to replace the equivalent class already present in the
kernel. access macros are similar except for the prefix, "chn" instead
of "chIO".
- NEW: Updated the MSP port to work with the latest MSPGCC compiler (4.6.3
LTS 20120406 unpatched), now the old MSPGCC 3.2.3 is no more supported
(backported to 2.4.1).
- NEW: EXT driver improved, now it is possible to reprogram channels at
runtime without necessarily specifying a new configuration.
TODO: Update AT91SAM7 EXT driver.
- NEW: Integrated FatFS 0.9, now the FatFS integration files are centralized
under ./os/various/fatfs_bindings and shared among all demos. The FatFS
file ffconf.h is now application-specific like all the other configuration
files.
- NEW: Added an new option CORTEX_PRIGROUP_INIT to the Cortex-Mx ports in
order to make priority organization configurable, the default is to
assign all the available priority bits to preemption priority with no
sub-priorities.
- NEW: Added a new function chPoolLoadArray() to the Memory Pools subsystem,
it allows to load an entire array element's into a pool with a single
operation.
- NEW: Addes support for .S patch in the GCC ARM ports, by Ayman El-Khashab.
- NEW: Added a switch to the STM32F4 Makefile files in order to enable or
disable the FPU support in a single place.
- NEW: Added float support (optional) to chprintf(), by Fabio Utzig.
- NEW: Added overflow handling in the ICU driver (contributed by Xo).
- NEW: Updated debug plugin 1.0.8 (backported to 2.4.0).
- NEW: Added more accurate UBRR calculation in AVR serial driver (backported
to 2.4.0).
- NEW: Revision of the round-robin scheduling, now threads do not lose their
time slice when preempted. Each thread has its own time slices counter.
TODO: Seek optimizations.
- NEW: Modified the Virtual Timers management, now the callback is invoked
not in lock mode. This change reduces the interrupt jitter caused by
multiple timers used at same time.
- NEW: Added board files and demo for Olimex LPC-P1343 (contributed by
Johnny Halfmoon).
- NEW: Added handling of input 2 to the STM32 ICU driver (contributed by
Fabio).
- NEW: STM32 Ethernet driver completed. Added STM32F107 and STM32F407
lwIP demos (backported to 2.4.1).
- NEW: lwIP related code is not centralized into a single place, no need to
duplicate the code in each application or demo (backported to 2.4.1).
- CHANGE: Added two new methods to the BaseSequentialStream interface:
chSequentialStreamPut() and chSequentialStreamGet().
- CHANGE: Removed the chioch.h header from the kernel, now channels interface
is exported by the HAL. Removed functions chPutWouldBlock() and
chGetWouldBlock().
- CHANGE: Removed macro chMsgGetS(), chMsgGet() is still available.
- CHANGE: chprintf() now takes a BaseSequentialStream as parameter instead
of a BaseChannel making it more generic.
- CHANGE: Now the shell requires a BaseSequentialStream instead of a
BaseChannel for communications making it more generic.
- CHANGE: Kernel memory pools now do not check the alignment of the inserted
objects, it is responsibility of the application to insert properly
aligned objects.
- CHANGE: The PORT_INT_REQUIRED_STACK parameter for the Cortex-Mx ports has
been increased to 32 from 16 because the stack frame sizes are increased
when compiling with optimizations disabled, which is common during
debugging. In order to save RAM trim back this value when compiling with
optimizations enabled (backported to 2.4.1).
- CHANGE: Renamed Ethernet driver in AT91 HAL ETHD1 (backported to 2.4.1).
- CHANGE: Macros icuGetWidthI() and icuGetPeriodI() renamed to icuGetWidth()
and icuGetPeriod().
- Various documentation fixes and improvements.
*** 2.4.4 ***
- FIX: Fixed wrong Keil project in ARMCM3-STM32F107 demo (bug #408).
- FIX: Fixed wrong macro in PWM driver (bug #407).
- FIX: Fixed USB driver possible deadlock under certain configurations (bug
#406).
- FIX: Fixed USB driver cannot be stopped (bug #405).
- FIX: Fixed fixed I2C malfunction after fixing bug 3607518 (bug 3607549).
- FIX: Fixed spurious interrupt disabling an STM32 DMA stream (bug 3607518).
- FIX: Fixed start of any ADC disables VREF and VBAT (bug 3607467).
- FIX: Fixed CAN_USE_SLEEP_MODE compilation problem (bug 3606616).
- FIX: Fixed misplaced brace in icu_lld.c (bug 3605832).
- FIX: Fixed bug prevents calling adcStartConversionI() within ISR (bug
3605053).
- FIX: Fixed typo in platforms/STM32/can_lld.c (bug 3604657).
- FIX: Fixed duplicated code in hal_lld.h (STM32F4xx) (bug 3602544).
- FIX: Fixed compile errors in Posix-GCC demo (bug 3601621).
- FIX: Fixed state checker error in MSP430 port (bug 3601460).
- FIX: Fixed wrong assertion in UART driver (bug 3600789).
- FIX: Fixed small bug in shell argument parsing code in shell_thread (bug
3599328).
- FIX: Fixed wrong condition in checksum offload of STM32 MAC driver (bug
3598720).
- FIX: Fixed error in STM32 MAC driver degrades performance (bug 3598719).
- NEW: Updated STM32L1xx header to the latest version.
*** 2.4.3 ***
- FIX: Fixed warning in STM32 ICU driver using IAR compiler (bug 3598177).
- FIX: Fixed typo in chOQGetEmptyI() macro (bug 3595910).
- FIX: Fixed possible false detect of loaded prescaler in RTCv1 driver (bug
3595489).
- FIX: Fixed unneeded RTC initialization when HAL_USE_RTC disabled
(bug 3594620).
- FIX: Fixed compilation issue with HAL_USE_RTC disabled (bug 3594083).
- FIX: Fixed wasting of BKP registers in RTCv1 driver (bug 3594005).
- FIX: Fixed potential problem with RTC_CRL_RSF bit (bug 3593972).
- FIX: Fixed STM32F1x rtc_lld_init not functional (bug 3592817).
- FIX: Fixed DMA reconfiguration problem in STM32 SPI driver (bug 3592809).
- FIX: Fixed STM32 UART driver redundant initialization (bug 3592764).
- FIX: Fixed wrong stack initializations in GCC STM32L1xx port files (bug
3591321).
- FIX: Fixed different redefinition for __main_stack_end__ symbol (bug
3591317).
- FIX: Fixed errors in STM32F0xx UART driver (bug 3589412).
- FIX: Fixed MSP430 port_switch code for MSPGCC issue (bug 3587633).
- FIX: Fixed workaround for errata in STM32F4-A devices (bug 3586425).
- FIX: Fixed error in palWritePad() macro (bug 3586230).
- FIX: Fixed missing ; in testmbox.c (bug 3585979).
- FIX: Fixed STM32_P407: implement mmc_lld_is_card_inserted (bug 3581929).
- FIX: Fixed double chSysInit() call in MSP430F1611 demo (bug 3581304).
- FIX: Fixed bug in abstract file interface (bug 3579660).
- FIX: Fixed various typos and wrong limits in the STM32F4/F2 HAL driver
(bug 3578944).
- FIX: Fixed ARM CMx crt0.c fails at low optimization levels (bug 3578927).
- FIX: Fixed compilation issue in syscalls.c (bug 3576771).
- FIX: Fixed superfluous pack #defines cause nasty warning (bug 3575662).
- FIX: Fixed mac.c won't compile due to misplaced declarations (bug 3575657).
- FIX: Fixed STM32F4 ADC prescaler incorrectly initialized (bug 3575297).
- FIX: Fixed RCC_APB2ENR_IOPEEN undeclared on STM32F10X_LD_VL devices (bug
3575098).
- FIX: Fixed optimization disable (-O0) breaks kernel in CortexM/RVCT (bug
3573123).
- FIX: Fixed misplaced declarations in lwip_bindings sys_arch.c (bug 3571053).
- FIX: Fixed FatFS won't compile with _FS_REENTRANT enabled (bug 3570135).
- FIX: Fixed mmc_spi.c won't compile due to misplaced declaration (bug
3570035).
- FIX: Fixed GPIO glitch during PAL initialization (bug 3569347).
- FIX: Fixed STM32F1x rtc_lld_init glitches rtc on hard reset (bug 3567597).
- FIX: Fixed STM8L, cosmic compiler: c_lreg not saved (bug 3566342).
- FIX: Fixed anomaly in USB enumeration (bug 3565325).
- FIX: Fixed problem with lwIP statistics (bug 3564134).
- FIX: Fixed packed structures macros not functional in IAR and RVCT port
(bug 3561279).
- FIX: Fixed Problem in FatFs demos related to LFN (bug 3560980).
- NEW: Added memory signature record to the registry in order to simplify
the implementation of ad-hoc debuggers.
- NEW: I2C workaround allowing to read single byte on all STM32 platforms
except STM32F1xx.
- NEW: Small adjustment in chcore.h files under ./os/ports/GCC required by a
difference in GCC 4.7.x.
*** 2.4.2 ***
- FIX: Fixed problem in STM32 DMA1 stream1 IRQ handler (bug 3538468).
- FIX: Fixed wrong priority assigned to TIM8 in STM32 ICU driver (bug 3536950).
- FIX: Fixed TIM8 not working in STM32 GPT driver (bug 3536523).
- FIX: Fixed timer overflow not working in STM32 ICU driver for TIM1/TIM8 (bug
3536522).
- FIX: Fixed wrong DMA channels on USART2 in STM32F10X_MD_VL devices (bug
3536070).
- FIX: Fixed issue with DMA channel init in STM32 ADC and SPI drivers (bug
3535938).
- FIX: Fixed unreliable PHY initialization (bug 3534819).
- FIX: Fixed wrong ADC callback buffer pointer in ADC driver (bug 3534767).
- FIX: Fixed lwIP-related files missing from version 2.4.1 (bug 3533887).
- FIX: Fixed problem with arm-v6m and state checker (bug 3532591).
- FIX: Fixed wrong MAC divider setting in STM32 MAC driver (bug 3531290).
- FIX: Fixed wrong MCO1 divider in STM32F2/F4 HAL (bug 3531289).
- FIX: Fixed missing "break" in AVR PAL driver (bug 3530924).
- FIX: Fixed timeout related race condition in STM32 I2C driver (bug 3530043).
- FIX: Fixed wrong macro check in STM32 MAC driver (bug 3527179).
- FIX: Fixed error in STM32L-Discovery board.h file (bug 3526918).
- NEW: Validated CAN driver on STM32F2/F4.
- Small fixes to the STM32F4 board files.
- Various documentation fixes and improvements.
*** 2.4.1 ***
- FIX: Fixed inconsistent LPCxxx Internal RC oscillator names (bug 3524138).
- FIX: Fixed wrong frequency limit checks vs VDD in STM32F2xx HAL (bug
3524094).
- FIX: Fixed STM32 I2C1 wrong alternate TX DMA setting (bug 3524088).
- FIX: Fixed three testhal builds fail (bug 3523322).
- FIX: Fixed MAC driver functions with invalid name (bug 3522808).
- FIX: Fixed code coverage crashes with Linux/gcc-4.4.5 (bug 3522301).
- FIX: Fixed macro dmaWaitCompletion() fails to compile in STM32 HAL (bug
3519202).
- FIX: Fixed ARM addresses generated in vectors table (bug 3519037).
- FIX: Fixed missing serial driver functionality for SAM7S64, SAM7S128 and
SAM7S512 (bug 3517648).
- FIX: Fixed a few more spelling fixes (bug 3515531).
- FIX: Fixed spurious ) char in STM32 serial_lld.h (bug 3514138).
- FIX: Fixed problem with FPU initialization in GCC Cortex-M4 port (bug
3513897).
- FIX: Spelling fixes (bug 3510812).
- FIX: Fixed STM32 ICUD8 not functional because wrong initialization (bug
3508758).
- FIX: Fixed chMBFetchI does not decrement mb_fullsem (bug 3504450).
- FIX: Fixed STM32 PLLI2S initialization error (bug 3503490).
- FIX: Fixed USART3 not working on STM32F2/F4 UART driver (bug 3496981).
- FIX: Fixed stack misalignment on Posix-MacOSX (bug 3495487).
- FIX: Fixed STM8S HSI clock initialization error (bug 3489727).
- FIX: Fixed MMC over SPI driver performs an unnecessary SPI read (bug
3486930).
- FIX: Fixed Realtime counter initialization in STM32 HALs (bug 3485500).
- FIX: Fixed PPC port broken when CH_DBG_SYSTEM_STATE_CHECK is activated
(bug 3485667).
- FIX: Fixed missing PLL3 check in STM32F107 HAL (bug 3485278).
- FIX: Fixed ADC maximum frequency limit in STM32F2/F4 ADC drivers (bug
3484947).
- FIX: Fixed various minor documentation errors (bug 3484942).
- NEW: STM32 Ethernet driver completed. Added STM32F107 and STM32F407
lwIP demos.
- NEW: lwIP related code is not centralized into a single place, no need to
duplicate the code in each application or demo.
- NEW: Updated the MSP port to work with the latest MSPGCC compiler (4.6.3
LTS 20120406 unpatched), now the old MSPGCC 3.2.3 is no more supported.
- CHANGE: The PORT_INT_REQUIRED_STACK parameter for the Cortex-Mx ports has
been increased to 32 from 16 because the stack frame sizes are increased
when compiling with optimizations disabled, which is common during
debugging. In order to save RAM trim back this value when compiling with
optimizations enabled.
- CHANGE: Renamed Ethernet driver in AT91 HAL ETHD1.
*** 2.4.0 ***
- NEW: Implemented new makefile system for ARM GCC ports, now objects,
listings and output files are generated into a "build" directory and not
together with sources, also implemented a simplified output log mode.
Now makefiles and load script files are requirements and trigger a
rebuild if touched.
- NEW: Improved Cortex-Mx port, now the Cortex-M4 are Cortex-M4F are also
supported. Improved startup files.
- NEW: Added a new hook THREAD_CONTEXT_SWITCH_HOOK() that allows to insert
code just before a context switch. For example this hook could be used
in oder to implement advanced power management schemes.
- NEW: Improved Event Flags subsystems in the kernel.
- NEW: Added a macro THD_STATE_NAMES to chthreads.h. This macro is an
initializer for string arrays containing thread state names.
- NEW: Added a new debug option CH_DBG_SYSTEM_STATE_CHECK that ensures the
correct API call protocol. If an API is invoked out of the correct context
then the kernel panics with a debug message.
- NEW: Added the new CMSIS 2.1 headers, now CMSIS resides into a shared
location: ./os/ports/common/ARMCMx/CMSIS. Old CMSIS files have been
removed from the various platforms.
- NEW: Removed all the ch.ld files from the ARMCMx demos, now the makefiles
point to common ld files under the various ports. Less duplication and
easier maintenance.
- NEW: Improved stack checking and reorganized memory map for the Cortex-Mx
demos. Now stacks are allocated at the start of the RAM, an overflow of the
exception stack now triggers an exception (it could go unnoticed before).
The process stack is organized to be checked on context switch like other
threads. Now all threads have an explicit stack boundary pointer.
- NEW: Now the port layer exports info regarding the compiler and the port
options. The info are printed into the test reports. Date and time also
added.
- NEW: Added initialization of the NVIC VTOR register to all Cortex-Mx (v7M)
ports. Also added a port option CORTEX_VTOR_INIT to enforce a different
default value into the register.
- NEW: Added "IRQ_STORM" test applications to those platforms supporting
ISR preemption.
- NEW: Added a chprintf() function to ./os/various, it can print on any
BaseChannel interface.
- NEW: Improved the mini shell, enhanced info command, optimizations and
removed the shellPrint() and shellPrintLine() functions, now it uses
chprintf() for output.
- NEW: USB driver model and USB implementation for STM32F1xx and STM32L1xx.
- NEW: USB CDC abstract driver.
- NEW: New driver models EXT, GPT, I2C, ICU, RTC, SDC, TM.
- NEW: Improved PWM and MAC driver models.
- NEW: Added support for STM32L1xx, STM32F2xx and STM32F4xx.
- NEW: Updated the STM32F1xx header file to the latest version 3.5.0 and fixed
it in order to correct several bugs related to the XL family.
- NEW: Added an unified registers file for STM32: stm32.h. This file includes
the appropriate vendor files then adds its own additional definitions.
- NEW: Added TIM8 support to the STM32 GPT, ICU and PWM drivers.
- NEW: DMA sharing in the STM32 HAL.
- NEW: ADC specific drivers for STM32L1xx, STM32F2xx and STM32F4xx.
- NEW: EXT driver AT91SAM7x and STM32(all).
- NEW: PAL driver for AVR.
- NEW: GPT driver for LPC11xx, LPC13xx and STM32(all).
- NEW: I2C driver for STM32(all).
- NEW: ICU driver for STM32(all).
- NEW: RTC driver for STM32F1xx.
- NEW: SDC driver for STM32F1xx.
- NEW: Added handling of USART6 to the STM32 serial driver.
- NEW: Added demos for the ST STM32F4-Discovery and STM32L1-Discovery kits.
- NEW: Updated AVR demos to use the new PAL driver.
- NEW: Now an error is generated at compile time when trying to enable the
options CH_DBG_ENABLE_STACK_CHECK on ports that do not support it.
- NEW: Added a kernel-only Cortex-Mx demo as reference project for users not
interested in the HAL but just want to use the ChibiOS/RT kernel.
The demo is named ARMCM3-GENERIC-KERNEL and is defaulted to the STM32, in
order to use it on other families or on the ARM Cortex-M0 just change the
inclusion paths in the makefile.
- NEW: Integrated new FatFs version 0.8b.
- NEW: lwIP 1.4.0 has been integrated, this new version does not require
custom hooks into the Thread structure and is thus much lighter.
- CHANGE: Now the callback associated to input queues is invoked before
reading each character. Previously it was invoked only before going
to sleep into the THD_STATE_WTQUEUE state.
- CHANGE: Removed the option CH_USE_NESTED_LOCK, lwIP no more requires it and
it would have conflicted with CH_DBG_SYSTEM_STATE_CHECK which is far more
useful.
- CHANGE: Renamed the scheduler functions chSchIsRescRequiredExI() to
chSchIsPreemptionRequired(), chSchDoRescheduleI() to chSchDoReschedule(),
chSysSwitchI() to chSysSwitch(). All those functions were special cases
and not regular I-class APIs.
- CHANGE: Renamed the macros IDLE_THREAD_STACK_SIZE and INT_REQUIRED_STACK
to PORT_IDLE_THREAD_STACK_SIZE and PORT_INT_REQUIRED_STACK for consistency.
- CHANGE: Removed the "old" Cortex-M3 port from the code, the current port
has no drawbacks and the old port is now just a maintenance cost.
- CHANGE: Removed the CH_CURRP_REGISTER_CACHE option, it is GCC-specific so
it does not belong to the kernel options. The feature will be eventually
reimplemented as a port-specific option.
- CHANGE: Renamed the demo ARMCM3-STM32F107-GCC in ARMCM3-STM32F107 and added
IAR and Keil projects.
- CHANGE: Now the ARMCM3-STM32F107 demo targets the board Olimex STM32-P107
as default.
- CHANGE: Removed all the prefixes from the structure/union field names
in the HAL subsystem.
- CHANGE: Updated the documentation to use Doxygen 1.7.4 which produces a much
more readable output. Also modified the documentation layout to put functions
and variables ahead of everything else in the group pages.
Doxygen version below 1.7.4 cannot be used anymore because differences in
templates. Note that now there are two Doxygen projects, one for generating
the CHM file the other for plain HTML.
*** 2.2.8 ***
- NEW: Added new API chThdExitS() in order to allow atomic operations on
thead exit.
- FIX: Fixed Extra initialization in STM32 SPI driver (bug 3436127).
- FIX: Fixed DMA priority setting error in STM32 UART driver (bug 3436125).
- FIX: Fixed DMA priority setting error in STM32 SPI driver (bug 3436124).
- FIX: Fixed broken support for UART5 in STM32 serial driver (bug 3434094).
- FIX: Fixed misplaced chRegSetThreadName() in ARM7-AT91SAM7S-FATFS-GCC demo
(bug 3411780).
- FIX: Fixed missing UART5 definition in STM32 HAL (bug 3411774).
- FIX: The function chThdExit() triggers an error on shell return when the
system state checker is enabled (bug 3411207).
- FIX: Some ARMCMx makefiles refer the file rules.mk in the ARM7 port (bug
3411180).
*** 2.2.7 ***
- INFO: GCC test runs performed with YAGARTO 4.6.0.
- NEW: Added debug plugin for Eclipse under ./tools/eclipse.
- NEW: The debug macros chDbgCheck() and chDbgAssert() now can be externally
redefined. The macro chDbgCheck() no more includes the line number in the
description because incompatibility with the Cosmic compiler.
- NEW: Added a new functionality to the registry subsystem, now it is possible
to associate a name to the threads using chRegSetThreadName. The main and
idle threads have their name assigned by default.
- FIX: Fixed wrong check on CH_DBG_ENABLE_STACK_CHECK setting (bug 3387671).
- FIX: Fixed wrong APB1 frequency check (bug 3361039).
- FIX: Fixed missing state in shell demos (bug 3351556).
- CHANGE: Removed todo.txt file, it does not belong to the stable version.
*** 2.2.6 ***
- FIX: Fixed race condition in Cortex-Mx ports (bug 3317500).
- FIX: Fixed wrong macro check in STM32 UART driver (bug 3311999).
*** 2.2.5 ***
- FIX: Fixed STM32F107 demo build failure (bug 3294998).
- NEW: Reorganization of the Cortex-Mx ports in order to reduced code and
comments duplication in the various headers (backported to 2.2.5).
- NEW: Improved the ARMv7-M sub-port now there are two modes: Compact and
Advanced.
The advanced mode is equivalent to the previous versions, the compact mode
is new and makes the kernel *much* smaller and generally faster but does
not support fast interrupts.
- NEW: Added to the ARMv6-M sub-port an option to use the PendSV exception
instead of NMI for preemption.
*** 2.2.4 ***
- FIX: Fixed CodeBlocks demo broken (bug 3304718).
- FIX: Fixed race condition in output queues (bug 3303908).
- FIX: Fixed CH_USE_HEAP and CH_USE_MALLOC_HEAP conflict (bug 3303841).
- FIX: Fixed timeout problem in the lwIP interface layer (bug 3302420).
- FIX: Fixed invalid BRR() macro in AVR serial driver (bug 3299306).
- FIX: Fixed missing IRQ vectors amicable names for STM32 XL devices (bug
3298889).
- FIX: Fixed wrong identifier in AVR serial driver (bug 3292084).
- FIX: Fixed wrong macro check for STM32 XL devices (bug 3291898).
- FIX: Fixed SPI driver restart in STM32 SPI driver implementation, also
applied the same fix to the STM8S SPI driver (bug 3288758).
- FIX: Fixed missing state transition in ADC driver (bug 3288149).
- FIX: Fixed missing state transition in SPI driver (bug 3288112).
- NEW: Added an option to the kernel to not spawn the Idle Thread from within
chSysInit(), this way the application can spawn a custom idle thread or
even use the main() thread as idle thread.
- CHANGE: chiQGetFullI() and chOQGetFullI() become macros. The queues
subsystem has been optimized and is no more dependent on semaphores.
Note that the queues callbacks invocation policy has been slightly
changed, see the documentation.
*** 2.2.3 ***
- FIX: Fixed insufficient idle thread stack in Cortex-M0-GCC port
(bug 3226671).
- FIX: Fixed stack checking in Cortex-M0-GCC port (bug 3226657).
- FIX: Fixed wrong checks in PAL driver (bug 3224681).
- FIX: Fixed wrong checks in I/O Queues (bug 3219197).
- FIX: Fixed invalid assertion in adcConvert() (bug 3205410).
- NEW: Implemented stack checking in the Cortex-Mx RVCT port.
- NEW: Improved preemption implementation for the Cortex-M0, now it uses
the NMI vector in order to restore the original context. The change makes
IRQ handling faster and also saves some RAM/ROM space. The GCC port code
now does not inline the epilogue code in each ISR saving significant ROM
space for each interrupt handler in the system.
*** 2.2.2 ***
- FIX: Fixed race condition in CM0 ports, the fix also improves the
ISR latency (bug 3193062).
- FIX: Fixed Cortex-Mx linker scripts alignment of __heap_base__, the
correct alignment is now enforced at runtime into core_init() in order
to make the OS integration easier (bug 3191112).
- FIX: Fixed error in function chCoreAllocI() function documentation (bug
3191107).
- FIX: Fixed minor problem with memory pools (bug 3190512).
- NEW: Added I-Class functions to the MailBoxes subsystem, now it is
possible to use them as a transport layer between ISRs and Threads.
- CHANGE: Swapped the numeric values of the TIME_IMMEDIATE and TIME_INFINITE
constants. Fixed the relative documentation in various places.
- Documentation related fixes.
*** 2.2.1 ***
- FIX: Stack overflow in CM0 ports when nearing interrupts saturation (bug
3187105).
- FIX: Fixed missing e200z test report (bug 3182611).
- FIX: Fixed error in _BSEMAPHORE_DATA macro (bug 3184139).
- FIX: Error in MAC driver (bug 3179783).
- FIX: Fixed wrong serial driver macros (bug 3173336).
*** 2.2.0 ***
- NEW: The Cortex-Mx port now also supports the IAR and Keil compilers.
- NEW: Improvements to the Cortex-Mx port.
- NEW: Improved ARM port supporting both ARM7 and ARM9.
- NEW: Support for binary semaphores in the kernel.
- NEW: Improved kernel hooks.
- NEW: Extensive improvements to the STM32 platform support.
- NEW: SPI drivers for the AT91SAM7x, LPC11xx, LPC13xx, LPC214x, STM8S,
platforms.
- NEW: Unified STM8 port for both the Cosmic and the Raisonance compilers.
- NEW: Demos for the STM8S-Discovery, STM8L-Discovery, STM32VL-Discovery
boards.
- NEW: Improved almost all the existing device driver models in the HAL.
- NEW: Added test/example applications for all the device drivers in the HAL.
- NEW: Added support for the STM8L platform.
- NEW: New UART unbuffered serial device driver model.
- NEW: Greatly improved documentation.
- NEW: Lots of other minor improvements and optimizations, see the change
log of the 2.1.x development branch for details.
*** 2.0.10 ***
- FIX: Fixed missing lines from the STM32 PWM driver (bug 3154403).
- FIX: Fixed error in chIOGetxxxxxEventSource() macros (bug 3153550).
- FIX: Fixed switch condition error in STM32 PWM driver (bug 3152482).
*** 2.0.9 ***
- FIX: Fixed error in output queues static initializer (bug 3149141).
- FIX: Fixed extra notifications in input queues (bug 3148525).
- FIX: Fixed error in sdPutTimeout() macro (bug 3138763).
- FIX: Fixed preprocessing crt0.s fail (bug 3132293).
- Documentation related fixes.
*** 2.0.8 ***
- FIX: Fixed failed memory recovery by registry scan, improved the related
test case (bug 3116888).
- FIX: Fixed PWM channels going to ACTIVE state when the pulse width is
set to zero in the STM32 PWM driver (bug 3114481).
- FIX: Fixed PWM channels return to IDLE state in STM32 PWM driver (bug
3114467).
- CHANGE: Bugs 3114467 and 3114481 have been fixed by backporting the 2.1.x
PWM driver, there is a difference in the PWM callback parameters.
*** 2.0.7 ***
- FIX: Fixed typo in board name (bug 3113574).
- FIX: Fixed defective event wait functions with timeout (bug 3113443).
*** 2.0.6 ***
- FIX: Fixed typo in memstreams.h (bug 3089567).
- FIX: Fixed wrong macro check in LPC214x and AT91SAM7 serial drivers (bug
3088776).
- FIX: Fixed non functioning option SPI_USE_MUTUAL_EXCLUSION=FALSE (bug
3084764).
- FIX: Fixed wrong macro check in STM32 serial support (but 3078891).
- FIX: Fixed lwIP demo not working (bug 3076354).
- FIX: Fixed non functioning option CH_USE_NESTED_LOCKS (bug 3075544).
- CHANGE: The API chThdInit() has been renamed to chThdCreateI().
*** 2.0.5 ***
- FIX: Incorrect AT91SAM7X initialization, thanks Leszek (bug 3075354).
- FIX: Fixed race condition in function chSchGoSleepTimeoutS, thanks Bal�zs
(bug 3074984).
- FIX: Fixed race condition in threads creation (bug 3069854).
- FIX: Fixed broken CH_DBG_ENABLE_STACK_CHECK option in legacy CM3 port (bug
3064274).
- FIX: Fixed CAN_USE_SLEEP_MODE setting (bug 3064204).
*** 2.0.4 ***
- FIX: Fixed potential issue with GCC reorganizing instructions around "asm
volatile" statements (bug 3058731).
- FIX: Fixed reduced ARM7 performance with GCC 4.5.x (bug 3056866).
*** 2.0.3 ***
- Tests reports regenerated using GCC 4.5.1, small performance improvements
in all benchmarks.
- FIX: Fixed crash of the Posix simulator under Ubuntu 10.4 (bug 3055329).
- FIX: Fixed incorrect PLL2 setting in STM32 HAL (bug 3044770).
- FIX: Fixed wrong check on STM32_HCLK (bug 3044758).
- FIX: Fixed wrong condition check in STM32 PWM driver (bug 3041414).
- FIX: Corrupted IRQ stack in Cortex-Mx port (bug 3041117).
- FIX: Fixed a documentation error regarding the ADC driver function
adcStartConversion() (bug 3039890).
- FIX: Fixed insufficient stack size for idle thread (bug 3033624).
- FIX: Fixed misspelled word in some chioch.h and chstreams.h macros (bug
3031534).
- FIX: Fixed wrong macro check in the STM32 SPI driver (bug 3028562).
*** 2.0.2 ***
- FIX: Fixed invalid context restore in MSP430 port (bug 3027975).
- FIX: Fixed STM32 vectors file (bug 3026528).
- FIX: Fixed race condition in STM32 SPI driver (bug 3025854).
- FIX: Fixed H_LOCK and H_UNLOCK redefined with CH_USE_MALLOC_HEAP (bug
3025549).
- FIX: Added option to enforce the stack alignment to 32 or 64 bits in the
Cortex-Mx port (bug 3025133).
- NEW: Added friendly interrupt vectors names to the STM32 HAL (change request
3023944).
- CHANGE: Removed the option -mabi=apcs-gnu from all the Cortex-Mx demos. The
option is not compatible with the 64 bits stack alignment now default in
the Cortex-Mx port. Note that the 64 bits alignment has a cost both as
performance and as space but it is the "standard".
*** 2.0.1 ***
- FIX: Fixed notification order in input queues (bug 3020708).
- FIX: Fixed non functional CH_CURRP_REGISTER_CACHE option in the Cortex-M3
port (bug 3020702).
- FIX: Fixed non functional CH_DBG_ENABLE_STACK_CHECK option in the Cortex-M3
caused by GCC 4.5.0, the fix also improves the context switch performance
because GCC 4.5.0 apparently was generating useless instructions within the
very critical context switch code (bug 3019738).
- FIX: Fixed insufficient stack space assigned to the idle thread in
Cortex-M3 port (bug 3019594).
- FIX: Fixed missing check in chIQReadTimeout() and chIQWriteTimeout() (bug
3019158).
- FIX: Fixed instability in Mutexes subsystem (bug 3019099).
- NEW: Added timers clock macros to the STM32 clock tree HAL driver.
*** 2.0.0 ***
- NEW: Implemented the concept of thread references, this mechanism ensures
that a dynamic thread's memory is not freed while some other thread still
owns a reference to the thread. Static threads are not affected by the new
mechanism. Two new APIs have been added: chThdAddRef() and chThdRelease().
- NEW: Now more than one thread can be waiting in chThdWait() as long they
own a reference.
- NEW: Implemented a new threads registry subsystem, the registry allows to
enumerate the active threads at runtime and/or from a debugger. This is
a preparatory step for a dedicated ChibiOS/RT debugger.
- NEW: New chCoreFree() API that returns the core memory left.
- NEW: Added a PowerPC port and demo targeting the SPC563M/MPC563xM
ST/Freescale automotive SOCs.
- NEW: Added STM8 port and demo targeting the Raisonance REva board
with STM8S208RB piggyback.
- NEW: New unified ARM Cortex-Mx port, this port supports both the ARMv6M
and ARMv7-M architectures (Cortex-M0/M1/M3/M4 so far). The new port also
allow to easily add to new Cortex-M implementations by simply adding a
parameters file (cmparams.h).
- NEW: Improved clock initialization for the STM32, now it is possible to
configure the clock using any clock source and any HSE frequency.
- NEW: The STM32 clock tree parameters and checks are now calculated into
a separate file in order to support multiple clock trees for different
sub-families of the STM32 platform.
- NEW: Added separated clock trees for the STM32 LD/MD/HD sub-family and
the CL sub-family. Now the selection of the sub-family is done in the
board.h file, there is no more the need to put -DSTM32F10X_xx into
the makefile.
- NEW: Added support for STM32/HD/CL UART4 and UART5, thanks Egon for the
patch.
- NEW: Embedded Artists LPCxpresso Base Board support files added.
- NEW: LPC11xx support, drivers (Serial, PAL, HAL) and demo.
- NEW: LPC13xx support, drivers (Serial, PAL, HAL), demo and reports.
- NEW: The port layer now can "capture" the implementation of individual
scheduler API functions in order to provide architecture-optimized
versions. This is done because further scheduler optimizations are
becoming increasingly pointless without considering architecture and
compiler related constraints.
- NEW: Updated the STM32 FW Library files to latest version 3.3.0.
- NEW: AT91SAM7 HAL support for the DGBU UART peripheral, as SD3.
- NEW: Added a demo for the AT91SAM7S256 and board files for the Olimex
SAM7-P256. The demo has been contributed by Alexander Kozaruk.
- NEW: Added core variant name macro in chcore.h and platform name in
hal_lld.h, the info are printed in the test report and from the "info"
shell command.
- NEW: Added BOARD_NAME macro to the various board.h files.
- NEW: Added a MemoryStream class under ./os/various.
- NEW: Added Mac OS-X support for the simulator. The Linux simulator has
been renamed to Posix simulator in order to include this change in a
single project.
- NEW: New articles, sections and various improvements to the documentation.
- NEW: Added to the simulators shell demos two new commands: threads and mem,
that show the currently active threads (using the new registry) and the
memory allocators state.
- NEW: New articles and guides in the documentation.
- OPT: New Cortex-M3 port code, *huge* performance improvements in all the
context switching related benchmarks (up to 18% depending on the benchmark).
The new code does no more require the use of the PendSV vector that is
thus available to the user, it also saves four RAM bytes for each thread
in the system. The old code is still available as a fall back option while
the new one is being hardened by peer review and time, the two ports are
perfectly interchangeable.
- OPT: Speed/size optimization to the events subsystem.
- OPT: Speed/size optimization to the mutexes subsystem.
- OPT: Speed/size optimization to the condvars subsystem.
- OPT: Speed/size optimization to the synchronous messages subsystem.
- OPT: Small size optimization in the semaphores subsystem.
- OPT: Minor optimizations in the "compact" code path.
- OPT: Optimization on the interface between scheduler and port layer, now
the kernel is even smaller and the context switch performance improved
quite a bit on all the supported architectures.
- OPT: Simplified the implementation of chSchYieldS() and made it a macro.
The previous implementation was probably overkill and took too much space
even if a bit faster.
- OPT: Internal optimization in the serial driver, it now is a bit smaller
and uses less RAM (all architectures).
*** 1.4.3 ***
- FIX: Fixed centralized ARM makefile (bug 2992747).
- FIX: Fixed write problems in MMC_SPI driver (bug 2991714).
- FIX: Fixed wrong macro check in serial.h (bug 2989459).
*** 1.4.2 ***
- FIX: Fixed missing reschedule in chEvtSignal() (bug 2961208).
- FIX: Removed C99-style variables declarations (bug 2964418).
- Minor documentation fixes.
*** 1.4.1 ***
- FIX: Fixed wrong UART deinitialization sequence in LPC214x serial driver
(bug 2953985).
- FIX: Fixed wrong PINSEL2 offset into lpc214x.h (bug 2953981).
- FIX: Fixed invalid UART-related macro in the LPC214x HAL (bug 2953195).
- FIX: Wrong prototype in template file chcore.c (bug 2951529).
- FIX: Fixed insufficient stack space for the idle thread in the ARMCM3 port
when compiling without optimizations (bug 2946233).
- FIX: Fixed wrong notes on function chThdResume() (bug 2943160).
- FIX: Fixed missing dependencies check for CH_USE_DYNAMIC (bug 2942757).
- FIX: Fixed swapped thread states descriptions (bug 2938445).
- FIX_ Fixed C99-style variable declaration (bug 2938444).
*** 1.4.0 ***
- Full test cycle and test reports updated.
- NEW: Reorganized and rationalized the distribution tree and the
documentation.
- NEW: Abstract Streams and I/O Channels mechanisms introduced.
- NEW: Added a new core memory manager.
- NEW: Improved Heap and Pools allocators.
- NEW: The I/O queues code has been improved, now there are 2 separate
structures: InputQueue and OutputQueue.
- NEW: Added timeout specification to the I/O queues read/write primitives.
- NEW: Static initializers macros introduced for most kernel objects.
- NEW: Added new APIs chSchDoYieldS() and chThdYield().
- NEW: Improved and simplified kernel configuration files.
- MEW: Added new benchmarks and test cases.
- NEW: Added more test cases in order to improve the test suite code coverage
(it was 74% in version 1.2.0, it is now close to 100%).
- NEW: Added a code coverage analysis application under ./tests/coverage.
- NEW: Added the test suite documentation to the general documentation.
- NEW: Linux x86 simulator demo added.
- NEW: Improved the Cortex-M3 preemption code.
- NEW: Added standard CMSIS 1.2.0 support to the Cortex-M3 port.
- NEW: Added support for the ST firmware library to the STM32 port.
- NEW: Added support for HD and CL STM32 devices.
- NEW: Improvements to the AT91SAM7 support.
- NEW: Improved makefiles and makefile fragments, now the paths are not fixed.
- NEW: Unified the initialization of the various drivers from a single HAL
driver. The single drivers can be enabled or disabled from a HAL
configuration file halconf.h.
- NEW: Hardware Abstraction Layer (HAL) with support for PAL, ADC, CAN, MAC,
MMC/SD, PWM, Serial, SPI drivers. Added driver implementations to the
various platforms.
- NEW: Added support for uIP, lwIP, FatFS external libraries, added demos.
- Many many other improvements and minor features.
*** 1.2.4 ***
- FIX: Fixed GCC 4.4.x aliasing warnings (bug 2846336).
- FIX: Modified linker scripts for GCC 4.4.x (bug 2846302).
- FIX: Fixed the CH_OPTIMIZE_SPEED option in the CM3 port (bug 2846278).
- FIX: Fixed GCC 4.4.x related problems in CM3 port (bug 2846162).
- FIX: Fixed LPC214x UART problem (bug 2841088).
*** 1.2.3 ***
- FIX: Fixed C99-style variable declarations (bug 2792919).
- FIX: Fixed instance of obsolete CH_USE_TERMINATE option in the C++ wrapper
(bug 2796065).
- FIX: Insufficient stack allocated to the C++ LPC2148 demo (bug 2796069).
- FIX: Fixed errors in events test case (bug 2796081).
- CHANGE: Increased main stack size to 1KiB for all the ARMx demos, 2KiB for
the C++ LPC2148 demo. This should make things easier for unexperienced
users.
*** 1.2.2 ***
- FIX: Fixed macro in test.h (bug 2781176).
- FIX: Fixed @file tag in sam7x_serial.c (bug 2788573).
- FIX: Fixed sequence assertion in test.c (bug 2789377).
- FIX: Fixed test_cpu_pulse() incorrect behavior (bug 2789383).
- FIX: Fixed missing volatile modifier for p_time field in Thread structure
(bug 2789501).
- CHANGE: Made the option CH_DBG_THREADS_PROFILING default to TRUE because it
is now required in order to execute the whole test suite. Note that this
option is very light so there is no real overhead in the system.
- Added a (harmless) workaround to the Cortex-M3 startup file in order to
make the RIDE7 demo compile on an unmodified distribution.
*** 1.2.1 ***
- FIX: Fixed regression in MinGW demo (bug 2745153).
- FIX: Fixed problem with the timeout constant TIME_IMMEDIATE (bug 2755170).
- FIX: Fixed a problem in semaphores test case #2 (bug 2755195).
- FIX: Removed unused list functions (bug 2755230).
- FIX: Added the exception notes into the source headers (bug 2772129).
- FIX: Added license notice to several files (bug 2772160).
- FIX: Found new instances of the obsolete function chSysGetTime() in the
C++ wrapper and in the WEB demo (bug 2772237).
*** 1.2.0 ***
- Full test cycle and test reports updated.
- NEW: Better separation between the port code and the system APIs, now an
architecture-specific "driver" contains all the port related code.
Port functions/macros are no more directly exposed as APIs to the user code.
- NEW: Added a configuration option to enable nested system locks/unlocks.
- NEW: Improved the interrupt handlers related code. Now interrupts are
handled in a very similar way in every architecture. See the "Concepts"
section and the "Writing interrupt handlers under ChibiOS/RT" article in the
documentation.
- NEW: Added the chEvtSignal() and chEvtSignalI() APIs that allows direct
thread signaling, much more efficient that chEvtBroadcast() when the target
is a known single thread.
- NEW: Added a configuration option that enables the priority enqueuing on
semaphores. It is defaulted to off because usually semaphores are used for
I/O related tasks without hard realtime requirements.
- NEW: Now the all the options in chconf.h and the various driver headers
can be overridden externally, as example from within the Makefile.
The options are no mode a simple define but a define with an assigned
TRUE/FALSE value within an #ifndef block.
- NEW: Idle thread hook macro added to the configuration file.
- NEW: Changed the ARM7 and Cortex-M3 startup files, now the action when
the main() function returns can be overridden by redefining the symbol
MainExitHandler.
- NEW: Mailboxes (asynchronous messages) subsystem and test cases added.
- NEW: Most APIs with a timeout specification now accept the constant
TIME_IMMEDIATE (-1) that triggers an immediate timeout when trying to enter
a sleep state.
- NEW: Mode flexible debug configuration options, removed the old CH_USE_DEBUG
and CH_USE_TRACE. Replaced with CH_DBG_ENABLE_CHECKS, SCH_DBG_ENABLE_ASSERTS,
CH_DBG_ENABLE_TRACE and CH_DBG_FILL_THREADS.
- NEW: Added a debug option CH_DBG_THREADS_PROFILING for threads profiling.
A field into the Thread structure counts the consumed time. The information
is not used into the kernel, it is meant for debugging.
- NEW: Added a debug option CH_DBG_ENABLE_STACK_CHECK for stack overflow
checking. The check is not performed in the kernel but in the port code.
Currently only the ARM7 and ARMCM3 ports implements it.
- NEW: Unified makefiles for ARM7, ARMCM3 MSP430 projects, the new makefiles
share a common part making them easier to maintain. Also reorganized the
demo-specific part of the makefile, now it is easier to configure and the
option can be overridden from outside.
- OPT: Improved ARM7 thumb port code, thanks to some GCC tricks involving
registers usage now the kernel is much smaller, faster and most OS APIs
use less RAM in stack frames (note, this is an ARM7 thumb mode specific
optimization).
- OPT: Small optimization to the Cortex-M3 thread startup code, improved thread
related performance scores and smaller code.
- OPT: Alternative, non-inlined and more compact, implementations for
port_lock() and port_unlock() in the Cortex-M3 port when CH_OPTIMIZE_SPEED
is FALSE.
- OPT: Improved ready list and priority ordered lists code, some space saved,
better context switch performance.
- CHANGE: Now the API chThdSetPriority() returns the old priority instead
of void.
- CHANGE: Modified the signature of the chMsgSendWithEvent() API, it now uses
a more efficient event signaling method.
- CHANGE: Removed the field p_tid from the Thread structure and the related
code, this improved the thread creation scores (~2%) and saves some RAM.
The trace buffer field cse_tid is now populated with a simple hash of the
thread pointer as thread identifier.
- CHANGE: Renamed the macros chSysIRQEnter() and chSysIRQExit() in
CH_IRQ_PROLOGUE() and CH_IRQ_EPILOGUE() in order to make very clear that
those are not functions but inlined code. Also introduced a new macro
CH_IRQ_HANDLER that should be used when declaring an interrupt handler.
- CHANGE: Renamed several internal initialization functions by removing the
"ch" prefix because could not be considered system APIs.
- CHANGE: Changed the chSemFastWaitS() macro in chSemFastWaitI() and
chSemGetCounter() in chSemGetCounterI().
- Improved ARM7 and Cortex-M3 support, new configuration options.
- Introduced the concept of interrupt classes, see the documentation.
- Introduced the concept of system states, see the documentation.
- Huge improvements to the documentation.
- Articles and notes previously in the wiki now merged in the general
documentation and updated, the wiki entries are obsolete and will be removed.
- New application notes and articles added.
- Added kernel size metrics to the test reports.
- Removed the inclusion graph from the documentation because the little
info they add and the size of all the images. It is possible to configure
Doxygen to have them again (and more graph types).
- Improvements to the test suite, added a new level of indirection that allows
to make tests depend on the configuration options without have to put #ifs
into the test main module. New benchmarks about semaphores and mutexes.
- Modified the test thread function to return the global test result flag.
- Removed testcond.c|h and moved the test cases into testmtx.c. Mutexes and
condvars have to be tested together.
- Added architecture diagram to the documentation.
*** 1.0.2 ***
- FIX: Fixed priority inheritance problem with condvars (bug 2674756).
- FIX: Fixed a problem in time ranges (bug 2680425).
- Replaced ./docs/index.html with a direct shortcut to the documentation.
*** 1.0.1 ***
- NEW: Added to the STM32 demo makefile an option to build ChibiOS/RT with the
full STM32 FWLib 2.03.
Note that, except for the compile option, the library is not used by the
OS nor supported.
- FIX: Fixed a problem into the STACK_ALIGN() macro.
- FIX: Fixed a problem with a wrong declaration of the PLL structure in the
file lpc214x.h.
- FIX: Modified the default value for the STM32 HSI setup it was 1, it should
be 0x10.