To set buffer size

From ThaiEasyElecWiki
Jump to: navigation, search

In console.c, default console buffer sizes for TX and RX are defined:

#ifndef CONS_TBUF_SIZE
#define CONS_TBUF_SIZE	240		//default
#endif

#ifndef CONS_RBUF_SIZE
#define CONS_RBUF_SIZE	80 		//default
#endif

To change, it's recommended that you define them somewhere in app_config.h and default sizes are ignored. For example:

#define CONS_TBUF_SIZE	1024
#define CONS_RBUF_SIZE	40

The more buffer size for TX (CONS_TBUF_SIZE), the more you can put messages in and wait until the CPU has time to say them out. But on RX side, the buffer size (CONS_RBUF_SIZE) that is longer than the longest message is enough. And a message are distinguished from another by an <Enter> (actually, both 0x0D and 0x0A are checked). Note that the console module is designed to receive characters from a keyboard being typed by human. So it's OK to read without using interrupt mechanism. Even that a bulk of characters are sent in at once, the serial port has 16-byte FIFO to serve that.

===========================================================================

ขนาดของ buffer ฝั่งส่งและรับของ console ถูกกำหนดค่าเริ่มต้นไว้ในไฟล์ console.c ในชื่อของ macro คือ CONS_TBUF_SIZE (TX) และ CONS_RBUF_SIZE (RX) ดังนี้

#ifndef CONS_TBUF_SIZE
#define CONS_TBUF_SIZE	240		//default
#endif

#ifndef CONS_RBUF_SIZE
#define CONS_RBUF_SIZE	80 		//default
#endif

การเปลี่ยนค่า สามารถทำได้โดยการ define ค่าที่ต้องการไว้ใน app_config.h ดังตัวอย่าง (สามารถวางไว้ตำแหน่งใดก็ได้)

#define CONS_TBUF_SIZE	1024
#define CONS_RBUF_SIZE	40

ขนาดของ buffer ฝั่งส่ง (CONS_TBUF_SIZE) ยิ่งมาก ยิ่งจะช่วยให้เก็บข้อความที่ต้องการส่งขณะที่ CPU ยังไม่ว่างได้มาก แต่สำหรับฝั่งรับ (CONS_RBUF_SIZE) ขนาดของ buffer อาจจะถูกกำหนดไว้เพียงแค่ให้มากกว่าขนาดของข้อความที่ยาวที่สุดที่จะรับก็เพียงพอ โดยข้อความแต่ละข้อความ จะถือว่าแยกจากกันด้วย <Enter> (แต่จริงๆแล้วจะตรวจสอบทั้ง 0x0D และ 0x0A) ทั้งนี้ console ถูกออกแบบมาให้รับข้อความจากคีย์บอร์ดที่ป้อนโดยมนุษย์ซึ่งพิมพ์ช้ากว่าการประมวลผลของ CPU มาก ดังนั้นจึงไม่มีการใช้ interrupt ในการรับข้อมูล และแม้ว่าจะได้รับข้อมูลหลายๆไบต์ติดกัน FIFO ขนาด 16 ไบต์ ภายใน serial port ก็ยังสามารถรับข้อความได้

Personal tools
Namespaces
Variants
Actions
Navigation
Articles and Tutorials
Shortcut (mini SUN7)
Toolbox