Initial commit
[hackover2013-badge-firmware.git] / ChangeLog.txt
1 v0.9.2 - Ongoing
2 ================
3
4 - Added lcdDrawPixels() to lcd.h and the current lcd
5 drivers to render rows of raw lcd data much quicker
6 than addressing consecutive pixels individually.
7 Can be used with windowing in future for fast
8 animation, continuously writing raw pixels in a
9 32x32 pixel frame, etc.
10 - Fixed ili9328SetWindow() and ili9325SetWindow().
11 They can now be used for fast screen paints of
12 restricted areas of the screen, such as animations
13 where raw pixel data is constantly fed to the LCD.
14 - Fixed pixel overflow bugs in drawCircleFilled(). Any
15 pixels that exceed screen limits will now be dropped,
16 though at the expense of slightly slower code.
17 - Added drawLineDotted() to drawing.c to draw lines with
18 a fixed pattern of empty and solid pixels
19 - Added __resetBootloader() macro to lpc134x.h to
20 reset and enter the USB bootloader (LPC1343 Reference
21 Design Base Board only since this depends on the
22 existance of the RC combination on the ISP pin).
23 To reset and executre code normally, the watchdog
24 time can be used (see "core/wdt").
25 - Added AIRCR register to lpc134x.h (Application Interrupt
26 and Reset Control Register).
27 - Added drawIcon16() to drawing.c to render monochrome
28 16x16 pixel icons from a byte array.
29 - Added a handful of common 16x16 icon definitions in
30 /drivers/lcd/icons16.h ... adapted from Gentleface
31 Toolbar Icon Set. For license terms see
32 http://www.gentleface.com/free_icon_set.html
33 - Added a few basic RGB565 color schemes to colors.h and
34 an image file showing the colors in /tools/colors_h.png
35 - Updated alphanumeric dialogue form to use new buttons.
36 - Rewrote drawButton() to use rounded rectangle and
37 all colors are now passed in as parameters. Also
38 modified the button command in the CLI to match this.
39 - Rewrote drawProgressBar() to take advantage of the
40 new rounded rectangle function (below). Also
41 modified the progress bar command in the CLI to
42 allow more colors to be indicated when rendering.
43 - Added drawRectangleRounded() to drawing.c (filled
44 rectangle with configurable rounded corners).
45 - Added drawArrow() to drawing.c to make small rectangles
46 for left/right menu items, etc.
47 - Completely rewrote the touch screen calibration code to
48 be much more accurate.
49
50 v0.9.0 - 28 March 2011
51 ======================
52
53 - Calibration process no longer starts automatically when
54 calibration data is not found in EEPROM. tsCalibrate()
55 now needs to called manually or from the CLI.
56 - Fixed a bug in cmd_tswait.c when no delay was passed.
57 - Added CLI command to set touch screen threshold
58 to register a touch event (since this can vary from
59 screen to screen). Type 'x' at the CLI to get/set
60 the value. The setting is persisted to EEPROM, and if
61 no value is found on EEPROM CFG_TFTLCD_TS_DEFAULTTHRESHOLD
62 from projectconfig.h is used.
63 - Adjusted touch screen code to check ADC values twice
64 and compare. If mismatch occurs, and error is returned.
65 This provides far more consistent TS values at the
66 expense of having to check the error results. See
67 'alphanumeric.c' for an example of doing this
68 correctly.
69 - Added seperate driver for ILI9328 based displays, even
70 though it seems to be identical to the ILI9325. Files
71 were seperated in case the initialisation needs to be
72 tweeked later or if incompatibilities are found.
73 - Added the ability to write the contents of the LCD
74 to a bitmap image, though it's very slow reading data
75 pixel by pixel and converting it to 24-bit RGB values.
76 Performance can definately be improved.
77 - Added 'drawRGB565toBGRA32' to drawing.c to convert
78 RGB565 colors back to the canonical BGRA32 format
79 - Added gain controls to TSL2561 driver to increase or
80 decrease sensitivity. Should be easy to implement
81 auto-gain functionality now.
82 - Changed USB VID to a valid value. Source files and
83 lpc134x-vcom.inf updated accordingly.
84 - Moved USB VID and PID to projectconfig.h
85 - Added '-mcpu' flag to the linker in Makefile (the wrong
86 libm was being linked because of this).
87
88 WARNING
89 --------------------------------------------------------
90 - Some config settings in EEPROM were relocated in v0.90+
91 of the LPC1343 Code Base to take into account the new
92 touch screen calibration code. See projectconfig.h
93 for more details of the new EEPROM layout.
94
95 v0.8.6 - 21 March 2011
96 ======================
97
98 - Added DWT section to LPC134x.h (see Cortex-M3
99 Technical Reference Manual section 8.3)
100 - Added CPU_RESET_CYCLECOUNTER to cpu.c to do rough
101 in-code performance checks (counts CPU cycles)
102 - Added '-lm' to linker in Makefile for math.c support
103 - Increased MAX_STRING_SIZE from 100 to 255 in stdio.c
104 - Added driver for the TCS3414 RGB color sensor
105 - Added driver for the TSL2561 digital light sensor
106 - Added CFG_USBCDC_BUFFERSIZE to projectconfig.h
107 instead of cdc_buf.h.
108 - Added a PWM example using a piezo buzzer (see
109 'tools/examples/basics/pwm_piezobuzzer' for details)
110 - Added ctype.c to 'core/libc'
111 - Changed Crossworks project to use libc files from
112 'core/libc' and modified the USB CDC printf to be
113 much faster by redirecting inside 'puts' rather than
114 '__putchar' (see 'sysinit.c').
115 - Fixed a bug in LPC134x.h ... USB_CMDCODE write and read
116 masks were reversed
117 - Added a simple example of reading the card ID from an
118 ISO14443A (Mifare Classic, etc.) card using the PN532
119 ('/tools/examples/sensors/pn532/ISO14443A_ID').
120 - Added an 'lcd' folder to 'tools/examples' showing how to use
121 the generic lcd drawing routines, the touch-screen, etc.
122 - Rewrote part of the touch screen calibration code to get more
123 accurate results. Each point is now tested twice and the
124 results are averaged. Values beyond a certain limit are also
125 rejected to ignore wacky readings.
126 - Added a preliminary PN532 (NFC/RFID) driver. Currently UART
127 only, and only allows simple commands to be sent and received.
128 By default, all data is fed out to the console via printf.
129 Will be elaborated and expanded in future releases.
130 - Cleaned up the ILI9325 TFT LCD driver a bit, adding a proper
131 enum for the commands, etc.
132
133
134 v0.8.5 - 7 March 2011
135 =====================
136
137 - Fixed a problem with GDB script when deploying firmware
138 with Segger J-Link in CodeLite. Code will now deploy
139 and start executing properly when F5 is pressed (assuming
140 the Segger GDB Server software is running in the background).
141 - Interrupts are now disabled while feeding the watchdog as per
142 a warning in the usermanual.
143 - Changed fonts for TTF LCDs. DejaVu Sans 9 is now used by default
144 in the LPC1343 Code Base. The following open source fonts have
145 been converted using The Dot Factory (see '/tools/dotfactory') and
146 can be found in '/drivers/lcd/tft/fonts':
147
148 FONT NAME WIDTH
149 ------------------------------- ----------
150 - Bitstream Vera Mono 9 Fixed (8)
151 - Bitstream Vera Mono 9 Bold Fixed (8)
152 - Bitstream Vera Mono 11 Fixed (9)
153 - Bitstream Vera Mono 11 Bold Fixed (9)
154 - DejaVu Sans 9 Variable
155 - DejaVu Sans 9 Bold Variable
156 - DejaVu Sans Condensed 9 Variable
157 - DejaVu Sans Mono 8 Fixed (8)
158 - DejaVu Sans Mono 8 Bold Fixed (8)
159
160 - Modified projectconfig.h to select the target board and configure
161 the project accordingly. This isn't ideal, but it's a lot more
162 maintainable than have a seperate code base for every board since
163 they share 95% of the same code.
164 - Modified WDT code to use the WDT oscillator (rather than the
165 external crystal)
166 - Fixed a bug when waking up from sleep in Chibi. Removed systick
167 delay when toggling reset and slptr pins since this was causing
168 a blocking condition with the wakeup ISR.
169 - Added an example of how to retrieve the MCU's unique
170 128-bit serial number using IAP (core/iap)
171 - Added an option to projectconfig.h to select which pin to use for
172 SCK on SSP0, since the QFN33 package doesn't have all the same
173 pins.
174 - Updated Chibi to v0.91 (adds sleep method and promiscuous mode to allow
175 Chibi to act as an 802.15.4 packet sniffer, etc.).
176 - Added lcdProperties_t to lcd.h to indicate the properties of different
177 LCDs (to determine if there is a touch screen present, whether the
178 screen orientation can be changed, etc.)
179 - Added basic ST7735 LCD driver (128x160 pixel TFT LCD using 6-pin
180 SPI-esque interface). Work in progress (no orientation support, etc.).
181 - Added some simple examples in the 'tools/examples' folder.
182
183 v0.80 - 27 Jan 2011
184 ===================
185
186 - Added optimised lcdDrawVLine using orientation
187 though this should only be used on lines
188 greate than 20 pixels or so to see any real
189 advantage
190 - Added cmd_uart to allow the HW UART speed
191 to be set in EEPROM (between 9600 and
192 115200). Use the 'U' command.
193 - Updated Crossworks projects files to use
194 custom printf in 'core/libc' (gains about
195 1.3KB in release mode)
196 - Added driver for SSD1306 OLED displays
197 to '/drivers/bitmap/ssd1306'
198 - Changed commands in the CLI to single
199 characters and shortened descriptions
200 to save flash space (~0.7KB)
201 - Updated ILI9325 to allow the screen
202 orientation to be changed to portrait
203 of landscape mode.
204 - Added cmd_orientation to change the LCD
205 orientation from the CLI
206 - Fixed a bug in the PMU Wakeup interrupt
207 handler
208 - Added a circular buffer for outgoing CDC
209 data (cdc_buf.c) since you can only feed one
210 frame per ms (max 64 bytes). The speed needs
211 to be improved finding the right balance
212 between caching data and sending it to the EP,
213 but this should avoid any dropped characters.
214 More testing will be needed to improve this.
215 - Fixed a bug with the USB CDC buffer
216 - Added SILENTMODE to the CLI to disable the
217 command prompt and echo of input characters
218 (see CFG_INTERFACE_SILENTMODE). Useful
219 when another MCU is use the CLI rather than
220 a human.
221 - Added IRQ pin to the CLI to indicate when a
222 command is being processed (pin = low) and
223 when it has completed or a new command can
224 be processed (pin = high).
225 - Added 'cmd_tswait' to wait for a touch event
226 - Removed 'drivers/nfc/pn532' until proper drivers
227 can be written
228 - Added 'cmd_text' and 'cmd_textw' to the CLI to
229 render text on the LCD and get the width in
230 pixels of the specified text before rendering.
231
232 v0.70 - 18 Dec 2010
233 ===================
234
235 - Added 'calibrate' and 'gettext' commands to the CLI
236 - Added a dialogue box for the TFT LCD/Touchscreen
237 to input alpha-numeric data and return the
238 results as a string ('drivers/lcd/tft/dialogues/*')
239 - Added touch screen calibration code and UI
240 ('drivers/lcd/tft/touchscreen.c')
241 - Fixed a bug in ILI9325.c to make sure that the LCD
242 is reset during initialisation
243 - ** IMPORTANT ** Changed 'core/i2c/*' to fix a number
244 of bugs (thanks Rob65!) ... though this means all
245 i2c peripherals and drivers will need to be tested.
246 - Added 'colorscheme_t' to drawing.h to try to use a
247 standard color palette across GUI controls and make
248 it easy to change later. Currently only the button
249 and progress bar make use of this.
250 - Added 'lcdBacklightOn()' and 'lcdBacklightOff()' to
251 lcd.h
252 - Added 'CFG_TFTLCD_TS_THRESHOLD' to projectconfig.h
253 to configure touch-screen sensitivity when waiting
254 for a touch event
255 - Modified 'core/gpio/gpio.c' to reduce the compiled code
256 size. Repetitive switches where only the registers
257 change were modified to use temporary registers and
258 execute the code only once.
259 - Added the source and binaries for TheDotFactory to
260 'tools/dotfactory' for convenience sake. See:
261 http://www.pavius.net/downloads/tools/53-the-dot-factory
262 - Removed 'drivers/lcd/tft/tscalibration.c' and moved
263 the relevant code to touchscreen.c
264 - Removed the imgconv tool from 'tools/imgconv' (see
265 point below for more information)
266 - Removed the previous custom image code and replaced
267 it with 24-bit Windows bitmap files. This is a bit
268 slower (since 24-bit data needs to be converted to
269 RGB565 for each pixel and rows are rendered bottom
270 up making pixel drawing harder to optimise) but
271 converting and eventually saving images is easier.
272 The current code is functional but needs to be
273 heavily optimised.
274 - Made some minor optimisations to the data and cmd
275 functions in the ILI9325 driver. Other functions
276 need to be optimised as well, but these two should
277 be close to optimal now. Currently 25 cycles
278 compiled with -Os, 36 cycles with no optimisation.
279 - Added 'projects/command/drawing/cmd_bmp.c' to load
280 24-bit Windows bitmap images from the SD card and
281 display them on the TFT LCD.
282 - Added some schematics to '/tools/schematics' to
283 show the assumed pin configurations
284
285 v0.60 - 8 December 2010
286 =======================
287
288 - Added a number of CLI commands for the TFT LCD
289 (see 'project/commands/drawing')
290 - Modified FCLK_FAST() in 'drivers/fatfs/mmc.c' to set
291 the max speed to 6.0MHz for improved reliability.
292 Tested with a 4GB microSD card, 300KB/s can be read
293 using a 512 byte read buffer.
294 - Modified Chibi to use 16-bit timer 0 for us delays
295 (more accurate)
296 - Added a number of commands to
297 '/projects/commands/drawing' for basic TFT LCD
298 operations. Removed 'lcd-test.c' and 'lcd-fill.c'.
299 - Added a flag to projectconfig.h to make FATFS read-only
300 (to save a couple KB when space is tight).
301 - Moved 'project/eeprom.*' to 'drivers/eeprom' to add a
302 level of abstraction to eeprom access throughout the code
303 - Added a table to projectconfig.h to manage eeprom
304 addresses. First 256 byte of eeprom should be reserved
305 for this.
306 - Added 'drivers/lcd/tft/colors.h' to keep all common
307 16-bit RGB565 color definitions in one location
308 - Added some sample images to 'tools/imgconv' that can
309 be used to render a basic clock on a TFT LCD screen
310 (using drawImageFromFile in 'drivers/lcd/tft/drawing.c')
311 - Modified the makefile to automatically run './lpcrc'
312 post-build
313 - Added drawButton() to 'drivers/lcd/tft/drawing.c'
314 - Updated 'drivers/lcd/tft/touchscreen.c' to do basic
315 debouncing. tsReadZ() was added to detect pressure on
316 the touch screen, and tsWaitForEvent() will only exit
317 when the pressure passes a minimum threshold. (Thanks
318 to Limor for pointing out some code by Rossum for this.)
319 - Fixed some off-by-one pixel errors in cmd-test and
320 elsewhere
321
322 v0.51 - 27 November 2010
323 ========================
324
325 - Added simple RSA encryption/decryption driver. Currently limited to
326 using 64-bit and 32-bit numbers in key pairs, which isn't terribly secure,
327 but allows much smaller code size than if huge number support was included.
328 - Added a driver for the MCP4725 I2C DAC (see "drivers/dac/mcp4725").
329 - Moved 'rom_drivers.h' from 'core/usbhid-rom' to 'core' since it can be used
330 for usbmsd-rom as well if it is implemented at a later date.
331 - ili9325ReadData() added to ili9325.c by Adafruit Industries (thanks!)
332 - Modified FCLK_FAST() in 'drivers/fatfs/mmc.c' to set fast SPI speed
333 to 18MHz instead of the previous 4MHz. This allows for slightly faster
334 rendering of bitmap images from SD cards, amongst other things.
335 - Fixed ILI9325 driver to use 0,0 based pixels and not 1x1, meaning the
336 pixel co-ordinates are 0..239 for X and 0..319 for Y. There may still be
337 some off-by-one pixel issues that need to be further tested.
338
339 v0.50 - 26 October 2010
340 =======================
341
342 - Moved command.c and cmd_tbl.h to /project to try to keep all
343 project-specific files in one location to improve code-sharing and make
344 upgrading easier
345 - Created seperate .c files for every command for the command-line interface
346 to make it easier to maintain and share code between projects. All commands
347 listed in cmd_tbl.h are now stored in their own files in /project/commands
348 (ex.: "/project/commands/cmd_hello.c", etc.)
349 - Added a CLI command to demonstrate how to draw to the ILI9325 TFT LCD
350 - Added a CLI command to show the contents of any directory from the SD card
351 (/project/commmands/cmd_sd_dir.c)
352 - Added a CLI command showing how to enter deep-sleep and exit with a SW
353 wakeup (/project/commands/cmd_deepsleep.c). Please note that the wakeup
354 will not work if you are using USB for the CLI. To see the wakeup message,
355 you must use UART for the CLI, which is selected by uncommenting
356 CFG_PRINTF_UART in projectconfig.h
357 - Fixed pmu.c to set the core clock back to an appropriate state after wakeup
358 - Added simple wrapper for eeprom access (projects/eeprom.c)
359 - Reorganised drivers/lcd to take into account non TFT LCD displays.
360 - Added a preliminary (experimental) driver for 128x64 pixel ST7565-based
361 bitmap LCDs (ex: Adafruit Industries - http://bit.ly/9xj5vw) ... based on a
362 driver from Limor Fried at Adafruit
363 - Numerous bug fixes added by Roel Verdult (Linux compatibility, GCC warnings, etc.)
364 - Added stub files for PN532 driver (/drivers/nfc/pn532), and added CFG_PN532 to
365 projectconfig.h as an option
366 - Added a simple pwm example using 16-bit timer 1 and p1.9 (MAT0) for the output. PWM can be used
367 to drive stepper motors, or to dim LEDs by adjusting the duty-cycle, etc. The example can be
368 found in "/core/pwm"
369 - Added a bi-polar stepper motor driver based on the Arduino library. Basic position data was added
370 to detece deviation from the 'Home' position and to retrieve the spindle's current angle. See
371 "drivers/motor/stepper" for more information.
372 - Added test firmware for the UART and USBCDC CLI (tools/testfirmware)
373 - Added a table to projectconfig.h to try to keep track of pin and peripherals
374 usage by drivers and the included SW examples.
375 - Reorganised some pins used by drivers to avoid pin conflicts.
376 - Modified core/timer16/timer16.c to allow PWM output to be stopped after a
377 certain number of pulses have been sent out.
378
379 KNOWN ISSUES
380
381 - The SPI code needs to be modified to allow several SPI devices to be safely
382 connected on the same bus. At present, this has not been tested since the
383 SSP/SPI blocks are used exclusively in the current drivers.
384
This page took 0.062253 seconds and 5 git commands to generate.