1
0
mirror of https://github.com/elua/elua.git synced 2025-01-08 20:56:17 +08:00

166 Commits

Author SHA1 Message Date
James Snyder
c6fd54ce7e - Buffer refactored to handle multibyte data.
Code which was previously using buffer has been updated to work with the
  changes.
  API has also changed in accordance:

  int buf_set(unsigned resid, unsigned resnum, u8 logsize, size_t dsize);
  int buf_is_enabled( unsigned resid, unsigned resnum );
  unsigned buf_get_size( unsigned resid, unsigned resnum );
  unsigned buf_get_count( unsigned resid, unsigned resnum );
  int buf_write( unsigned resid, unsigned resnum, t_buf_data *data, size_t dsize );
  int buf_read( unsigned resid, unsigned resnum, t_buf_data *data, size_t dsize  );

  Essentially buf_rx_cb and buf_get_char have been renamed to buf_write and
  buf_read.  For these, one now passes a pointer to where the data is coming
  from or going to, and a dsize parameter indicating how many bytes should be
  copied.  Also, buf_set takes this same dsize parameter, and keeps it in the
  struct.  This allows us to ensure that when data is read or written the
  number of bytes matches the buffer element size.

  I thought about maintaining compatibility functions to provide the original
  buf_rx_cb and buf_get_byte API calls, however there weren't a large number
  of uses of buf, so it wasn't hard to convert things.

  One caveat: BUF_MOD_INCR assumes that byte counts for alternate type sizes
  will be powers of 2.

  Also, BUF_SIZE_xx's are assumed to refer to element counts.

- UART buffering enabled on LM3S

This doesn't include switching the ADC code over to using these buffers quite
yet.

I'm open to comments on these modifications if theres a better or simpler
approach.  I've checked to make sure buffers work on LM3S, but I don't own any
other platforms to make sure there aren't unintended side-effects.
2009-02-09 03:43:47 +00:00
Dado Sutter
b2edeca528 Platform Dependent Section created 2009-02-04 03:22:49 +00:00
Dado Sutter
e64a80124e Portuguese version structure added 2009-02-03 20:50:59 +00:00
Dado Sutter
634528c5a6 Missing link and filename fixes 2009-02-03 20:12:12 +00:00
Dado Sutter
54d447d2bb Filename fixes 2009-02-03 19:59:46 +00:00
Dado Sutter
c853d97e27 Modules added to the menu tree structure
Skeleton content for some pages (english version only)
Menu Tree is functional
2009-02-03 19:50:37 +00:00
Dado Sutter
1a8fb598c6 Last branch now opens
Alphabetic ordered
Ongoing work ....
2009-02-03 12:52:33 +00:00
Dado Sutter
d2c4225b14 Files updated for two language (English and Portuguese) structure 2009-02-02 23:03:37 +00:00
Dado Sutter
4d7da08259 reference menu tree structure testing 2009-02-02 22:49:13 +00:00
Dado Sutter
a75755fdcc English and Portuguese test content for the new doc structure still under development.
To be enhanced very soon. This is just an initial commit to allow colaborative dev.
2009-02-02 21:11:46 +00:00
Dado Sutter
6137c01714 New HTML doc structure still under evaluation and development.
Please read file readme.txt on /doc for more info.
2009-02-02 21:08:31 +00:00
Bogdan Marinescu
bdecd89d31 small typo in i386 2009-02-01 18:47:25 +00:00
James Snyder
709d18c080 Updated ADC Module:
- now uses bitfields rather than HWREGBITW for keeping track of state
- started generalizing functionality for smoothing, state tracking etc... into
  separate functions
- burst mode now works, including with smoothing enabled (only operates in a
  blocking mode, non-blocking to come later)
2009-01-31 21:04:08 +00:00
Bogdan Marinescu
afa96dcc25 I was bored during a long training, so I added partial ANSI term support to i386. Now you can life.lua on it :) 2009-01-28 17:53:33 +00:00
James Snyder
da35498b02 - ADC now runs with an interrupt handler, which manages samples from each
channel.  Smoothing support (rolling average) has been added. adcscope has
  been updated to reflect these changes, and show output from 4 channels at
  once.

- fix for typo in stm32/platform.c
2009-01-27 20:49:45 +00:00
James Snyder
16e4dba18d line endings for rit128 changed to unix. 2009-01-27 20:49:34 +00:00
Bogdan Marinescu
0d9fcf9909 - lua parsing: lparser.c was modified to allocate some of its structures to
the heap instead of the stack. Also, the stack size was bumped to at least
  2048 bytes on all backends. Hopefully this will take care of most issues
  related to stack overflows.

- new buffering system available. Originally I planned to make it fully
  generic, but I came to the conclusions that this would take too much
  development work and system resources (RAM/Flash) if done properly, so
  currently it's only used on UART RX (although it could be easily extended
  for other peripherals). For an example of use check the AT91SAM7X and
  AVR32 backend (platform_init and associated interrupt handlers and also
  platform_conf.h).

- new XMODEM implementation. Better, cleaner, bug fixed, and BSD instead of
  GPL.

- AVR32 can use the huge (32MBytes) SDRAM on the board as system memory now.

- fixed an error in elua_sbrk/_sbrk_r (and revised the compilation options
  for dlmalloc).

- added the CPU module and interrupt support on the STR9 platform.

- uart module changes: 'sendstr' is out, but the regular 'send' will send
  strings instead of simple chars (which makes sense since Lua doesn't have
  a "char" type). Also, the 'timer_id' and 'timout' parameters of the 'recv'
  function are now optional.
2009-01-22 19:46:47 +00:00
James Snyder
569a9f69e7 fix to correctly use multiple input channels 2009-01-22 03:25:09 +00:00
James Snyder
150005cad9 Quick ADC demo (not yet an actual scope, just writes text to OLED with last
reading).
2009-01-21 23:41:04 +00:00
James Snyder
cd2e9e1cf0 Initial ADC implementation. 2009-01-21 23:40:34 +00:00
James Snyder
88ccbc5375 Typo fix. :-) 2009-01-21 23:40:03 +00:00
Pedro Bittencourt
fe072acadd Completing some comments about lua function calls on that module 2009-01-19 20:34:06 +00:00
Dado Sutter
1acaa67361 Fixed mistyped syntax of disp.imagedraw() function 2009-01-19 20:25:50 +00:00
Bogdan Marinescu
69e02e0375 bugfix: mathlib's rotable not included anymore in 'lualong' mode 2009-01-14 11:03:28 +00:00
Bogdan Marinescu
093108faad eLua stack overflow fix
DETAILS: for most platforms, the main stack size was set to 256 bytes to
save RAM. During a routine Lua debugging session, I discovered that there
are at least two data structures in Lua (declared on the stack) that can
lead to a stack overflow problem because of their size:

lparser.h -> struct FuncState (original size: 572) is allocated on the stack
when the parser needs to compile a Lua function
lstrlib.c -> MatchState (original size: 272) is allocated on the stack
everytime the string library does match-related operations.

To fix the first problem I modified these macros in luaconf.h:

/*
@@ LUAI_MAXUPVALUES is the maximum number of upvalues per function
@* (must be smaller than 250).
*/

LUAI_MAXUPVALUES from 60 to 10

/*
@@ LUAI_MAXVARS is the maximum number of local variables per function
@* (must be smaller than 250).
*/
LUAI_MAXVARS from 200 to 25

The new size of the FuncState structure: 124

To fix the second problem I modified this macro in luaconf.g

/*
@@ LUA_MAXCAPTURES is the maximum number of captures that a pattern
@* can do during pattern-matching.
** CHANGE it if you need more captures. This limit is arbitrary.
*/

LUA_MAXCAPTURES from 32 to 10

The new size of the MatchState structure: 96

All these values are experimental, but they should work well.

Also, I forced the main stack to 512 bytes in all the backends. Hopefully
this will take care of this problem.
2009-01-12 11:52:58 +00:00
Bogdan Marinescu
a529d5d835 LTR bugfix: wrong metatable query for rotables in luaV_gettable 2009-01-12 10:35:58 +00:00
Bogdan Marinescu
dd5294d821 changed propedit 2009-01-11 20:44:22 +00:00
Bogdan Marinescu
f729155fce - Lua Tiny RAM (LTR) patch is now integrated in eLua and is enabled by default
- all eLua modules updated to work with LTR
- "cpu" module added to avr32, at91sam7x, str7
- "disp" module no longer generic (now stays in src/modules/lm3s). For this reason, the "disp" platform interface was also removed.
- the "modcommon" mechanism in STM32 (ROM loader) was depreciated in favour of the Lua Tiny RAM patch (and the "stm3210lcd" module from the STM32 backend now uses LTR).
- small bugfixes
2009-01-11 20:43:02 +00:00
James Snyder
737aeda5b8 No need to double-check baud with asserts. 2009-01-09 23:22:17 +00:00
James Snyder
f9a608c332 Minor change to reflect name usart.h. 2009-01-09 23:22:09 +00:00
James Snyder
51163fdf86 Update drivers to StellarisWare revision 3740.
- functionality added to UART driver
- simplification to reduce code repetition
- misc other fixes?
2009-01-09 23:21:58 +00:00
James Snyder
4b505e92eb Fix RIT OLED driver to work on LM3S6965 (Rev C and later boards) 2009-01-09 22:18:23 +00:00
James Snyder
4ef76a03b9 Fix for LM3S6965 PWM1. 2009-01-09 22:12:35 +00:00
Bogdan Marinescu
fca447cb12 New feature: per-board file system specifications (which means that not all the files from romfs/ will end up in your binary, you now need to specify
in SConstruct what files (or rather samples) you need to be included in the
ROM file system for each board).
2009-01-08 15:20:05 +00:00
Bogdan Marinescu
e851b3cfce updated tmr module for the virtual timers 2009-01-07 20:27:07 +00:00
Bogdan Marinescu
58da9ac870 - factored out common code from all backends in src/common.c
- added virtual timers (on LM3S, AVR32 and AT91SAM7 for now)
- added interrupt handling code for AT91SAM7 and AVR32
- fixed two serious bugs that prevented the eLua image to run on both STR9 and LPC2888 (linker command file issues)
- fixed line endings (DOS->UNIX) in the STM32 library files
- fixed preprocessor errors (hopefully all of them) like #if ELUA_CPU == LM3S8962
- other minor or less than minor fixes :)
2009-01-07 20:17:18 +00:00
Bogdan Marinescu
450dc03989 fix yet another preprocessor error 2009-01-02 11:57:02 +00:00
Dado Sutter
3989133645 restoring the lm3s.c file, wrongly removed from the repo (by me :) before. 2009-01-01 00:10:52 +00:00
Dado Sutter
acf34177af Independent txt doc files removed from trunk 2008-12-31 22:01:26 +00:00
Dado Sutter
6513694269 Independent txt doc files beeing removed.
They are all migrating to the eLua_Manual.pdf
2008-12-31 21:57:32 +00:00
Dado Sutter
ce14c9199a eLua doc migrating to PDF Format
an eLua_Manual.pdf was added to docs
separate .txt files will be removed soon
The eLua_Manual.odt development will be part of another area (branch) of the repo
2008-12-30 04:18:11 +00:00
Bogdan Marinescu
bb3d4466fb fixed a build problem 2008-12-27 15:51:36 +00:00
Bogdan Marinescu
843bb3dd59 Now we have both GPIO and timer support on AVR32. led.lua sample was also modified to work with the ATEVK1100 board. More to come after I get rid of some other projects. 2008-12-16 19:01:51 +00:00
Bogdan Marinescu
c1d88386dc many fixed to the AVR32 backend, update if you need AVR32 support 2008-12-14 21:39:51 +00:00
Bogdan Marinescu
edac46fcd6 preliminary AVR32 port 2008-12-13 23:31:40 +00:00
Dado Sutter
77d626b26a href tags changed to relative (to current host) to avoid the need for "elua" host be known by DNS.
Modules tested ok after changes.
2008-12-13 21:31:20 +00:00
Dado Sutter
6ac505a181 Pong example remorphed for a require() / module () scheme.
It now illustrates how to create and use a module in Lua for eLua.
An LM3S platform-dependend module is created, exposing it's buttons, leds and offering some utility functions.
2008-12-08 19:39:47 +00:00
Dado Sutter
a20cfa3563 Still integrating basic text from previous doc & site content. 2008-12-01 23:04:05 +00:00
Dado Sutter
69157a6d21 pong.lua code updated to the new disp.stringdraw() and disp.imagedraw() disp module
syntax.
2008-12-01 01:46:19 +00:00
Dado Sutter
53cd95035e First version of the eLua Manual added to the docs folder.
This very first version is basic an assembly of the previous txt files written
by Bogdan.
Documentation for the new disp module was included and some initial revisions too.
This document, in PDF format, will soon replace the separated txt files in the docs
folder of the eLua distros and it will also be available separetely on the site.
2008-11-30 23:34:18 +00:00