From: N. A. C. <nes...@gm...> - 2008-08-14 19:53:47
|
You put it very clear. The question now is if the PIC would at least be able to represent a board and make some moves without committing suicide. Maybe it could be used for some purpose: for example, to control positions of the pieces on the board, and things like that, then, a more powerful processor would be used for computations. But to start, I would prefer a PIC, since it's easier to program than other, more complex, solutions. Thanks!! If any more comments, please, let me know!! 2008/8/14 Raphael Neider <rn...@we...>: >> BTW, I have realized that I was compiling for the default target, not >> PIC16. Now, I'm getting some linker errors. I'm attaching the sources, >> you can test it just with >> # make >> >> I have commented out "puts" and "#include <assert.h>" and two assertions. >> But I still get the following: >> >> nestor@fijo-nestor:~/Desktop/chess/firstchess/pic16$ make >> sdcc firstchess.c -mpic16 -o firstChess > > You are compiling for the default pic18f452, which may or not be what > you want. Select the desired target chip with -mpic16 -p18f6720 (replace > 6720 with your device code). > >> message: using default linker script "/usr/share/gputils/lkr/18f452.lkr" >> warning: relocation of section "udata_firstchess_7" failed, relocating >> to a shared memory location >> error: linker script has no definition that matches the type of >> section "udata_firstchess_7" >> make: *** [all] Error 1 >> >> Any idea?? Thanks! > > Yes: You are out of memory, and even if the device had enough memory, > you fail to respect the data banking scheme of the PICs (BSR register). > > 1) You allocate the HIST hist[6000] array of 48000 bytes; the 18f452 > only has 6 banks of 256 bytes ==> 1536 bytes of memory. > > 2) The 18f6720 has 15 banks of 256 bytes of memory ==> 3840 bytes, which > is all the PIC architecture can address (16 bank is split into access > bank and SFRs and not available for general use). > > 3) Even if your array was the only data structure and was only 257 bytes > in size, this error would occur still. The data memory is organized in > banks of 256 bytes; no single object can be longer than that (has to do > with BANKSEL directives and compiler internal assumptions about each > structure/array residing completely in a single bank). > In short, you must cut down the hist structure to (say) HIST hist[32], > or modify the .lkr file to create a huge bank to accommodate *only* this > array (you would have to make sure that other objects allocated to that > superbank do not cross 256-byte boundaries, which you cannot do ==> > problem in the linker rather than the compiler). Even then I cannot > guarantee that the array access works as expected in all cases (it > should, but such a setup is highly unusual and untested). > > Such problems caused my initial doubts on playing chess on a > microcontroller. Knowing that you want to use PICs, I cannot see how to > solve them: Other devices (8051-derivatives) have external memory, which > might be useful in this case (if they can address 64 kB of memory), but > with PICs I can only think of manually attached memory via 2 or more 8 > bit ports for addresses and data, SPI, ... > > Good luck, > Raphael > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Sdcc-user mailing list > Sdc...@li... > https://lists.sourceforge.net/lists/listinfo/sdcc-user > -- Néstor +34 687 96 74 81 nes...@gm... |